2011-06-20 14 views
14

में ढाँचे का पता देखने के लिए मैं एक समारोह जो पता देता है के रूप मेंकैसे 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; 
} 

निम्नलिखित जहां struct नोड

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

मैं printf में कैसे देख सकता है ("") अस्थायी में संग्रहीत पता?

अद्यतन
मैं gdb में adressed जाँच करें कि पतों हेक्स संख्या स्वरूप में आ रहे हैं यानी 0x602010 जहां printf("%p",temp) में के रूप में एक ही पते एक अलग संख्या है जो मैं क्या gdb प्रिंट आदेश में देखा था से अलग है में आ रहा है ।

उत्तर

24

सूचक पता फॉर्मेट स्पेसिफायर %p का उपयोग करें:

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

+1: ज्यादा (pedanticly सही) compilers के लिए, 'करने के लिए शून्य *' सूचक डाली: 'printf ("% p "(शून्य *) अस्थायी) ' – pmg

+0

क्यों न केवल 'printf (" 0x% 08X ", &temp);' – aroth

+2

@aroth: चीज़ के पते को मुद्रित न करें: आपके पास कोई गारंटी नहीं है' हस्ताक्षरित 'और' स्ट्रक्चर नोड ** 'का एक ही प्रतिनिधित्व है: उदाहरण के लिए आपकी स्निपेट 64-बिट मशीनों पर असफल हो जाती है उदाहरण के लिए – pmg