как увидеть адрес структуры в printf - PullRequest
16 голосов
/ 20 июня 2011

У меня есть функция, которая возвращает адрес следующим образом

struct node *create_node(int data)
{
        struct node *temp;
        temp = (struct node *)malloc(sizeof(struct node));
        temp->data=data;
        temp->next=NULL;
        printf("create node temp->data=%d\n",temp->data);
        return temp;
}

, где struct node -

struct node {
        int data;
        struct node *next;
};

Как я могу увидеть в printf ("") адрес, сохраненный в temp?

ОБНОВЛЕНИЕ
Если я проверяю адрес в GDB, адреса приходят в шестнадцатеричном формате, то есть 0x602010, где тот же адрес в printf("%p",temp) идет в другом номере, который отличаетсяиз того, что я видел в команде печати GDB.

Ответы [ 2 ]

28 голосов
/ 20 июня 2011

Использовать указатель формата адреса указателя %p:

printf("Address: %p\n", (void *)temp);
2 голосов
/ 19 октября 2018

EDIT: Не делай этого! Он печатает адрес указателя, а не то, что вы хотите!

У меня были всевозможные проблемы, чтобы заставить это работать, но вот что-то, на что компилятор (я использую простую командную строку "cc" unix) не жаловался и, казалось, давало соответствующие результаты:

struct node temp;
// ... whatever ...
printf ("the address is %p", &temp);

[Вместо того, чтобы удалять, я оставил это как пример того, что НЕ нужно делать. -smb]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...