указатель структуры и место в памяти - PullRequest
0 голосов
/ 25 апреля 2018
struct Data
{
    int num;
    struct *next, *prev;
};

typedef struct Data sData;

int main()
{
    sData *head;
    head = NULL;
    printf("%lld %lld", head, &head);
    return 0;
}

Я пытаюсь глубже понять структурные указатели и их распределение памяти. Почему напечатанные значения отличаются?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

При печати «head» вы можете увидеть адрес блока памяти, на который он указывает (NULL), а при печати «& head» вы увидите адрес блока памяти, где хранится переменная «head».

0 голосов
/ 25 апреля 2018

Глядя на ваш код, head является переменной.Тот факт, что это указатель на структуру SData, бесполезен для понимания:

  • head возвращает значение переменной head, здесь оно равно NULL.
  • & head возвращает адрес переменной head, здесь это зависит от конфигурации вашего компилятора и компоновщика.Поскольку head является локальной переменной, это может быть адрес местоположения в стеке.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...