Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

Память в C++, разные значения поля в связном списке

#cpp


В связном списке создаются объекты с одинаковым адресом памяти и разными значениями
их полей.Как такое возможно? Знающих прошу не минусовать, а ответить.Буду очень благодарен.

class LinkList
{
    struct Node
    {
        int a;
        Node* next;
    };

    Node* head=nullptr;

public:
    void add(int x)
    {
        Node* current = new Node;
        current->a = x;
        current->next = head;
        head = current;
    }
    void print()
    {
        while (head != NULL)
        {
            cout << head->a <<"  location: "<<&head<next;
        }
    }
};

int main(){
     LinkList obj;

        obj.add(1);
        obj.add(2);
        obj.add(3);
        obj.add(4);
        obj.add(5);

     obj.print();


    return 0;
}


вывод:

5  location: 0x22fecc
4  location: 0x22fecc
3  location: 0x22fecc
2  location: 0x22fecc
1  location: 0x22fecc

    


Ответы

Ответ 1



В print() вы печатаете адрес указателя head. Заметьте: не адрес, хранящийся в head, а адрес самого head. Решение - убрать & отсюда: cout << head->a <<" location: "<<&head<

Комментариев нет:

Отправить комментарий