2011-06-20 12 views
14

Tengo una función que devuelve la dirección de la siguiente maneracómo ver la dirección de una estructura en printf

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; 
} 

donde struct node es

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

¿Cómo puedo ver en printf ("") el dirección almacenada en la temperatura?

ACTUALIZACIÓN
Si puedo comprobar el Adressed en GDB las direcciones vienen en formato de número hexadecimal es decir 0x602010 donde como misma dirección en printf("%p",temp) está llegando en un número diferente que es diferente de lo que vi en el comando de impresión GDB .

Respuesta

24

Utilice la dirección del puntero especificador de formato %p:

printf("Address: %p\n", (void *)temp); 
+4

+1: Para compiladores exceso de celo (pedanticly correcta), del puntero a '' void *: 'printf ("% p", (void *) temp) ' – pmg

+0

¿Por qué no imprime la dirección de la cosa, como' printf ("0x% 08X", &temp); '? – aroth

+2

@aroth: no tiene ninguna garantía' unsigned' y 'struct node **' tienen la misma representación: su fragmento falla terriblemente en máquinas de 64 bits, por ejemplo, – pmg

Cuestiones relacionadas