can not print address of a pointer in c++ -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 1 उत्तर
  • 3 उत्तर

मैं c ++ में नया हूँ मैंने इस कार्यक्रम को लिखा है।

  #include & lt; iostream & gt; नेमस्पेस एसटीडी का उपयोग करना; Int मुख्य (शून्य) {int x = 24; Char y = 'ए'; Char * pchar = & amp; y; Int * pint = & amp; x; Cout & lt; & lt; "pchar =" & lt; & lt; hex & lt; & lt; और pchar & lt; & lt; endl; Cout & lt; & lt; "pint =" & lt; & lt; hex & lt; & lt; & amp; पिंट & lt; & lt; endl; Cout & lt; & lt; endl; Cout & lt; & lt; "pchar =" & lt; hex & lt; & lt; pchar & lt; & lt; endl; Cout & lt; & lt; "pint =" & lt; & lt; hex & lt; & lt; पिंट & lt; & lt; endl; pchar = शून्य; पिंट = शून्य; getchar (); वापसी 0; }  

और उसका परिणाम https://www.dropbox.com/s /wzxp1tkuqgw5p3g/Screenshot%202014-02-18%2022.52.29.png

क्या आप मुझे समझने में सहायता कर सकते हैं कि मैं & amp; ? y का पाठ "itemprop =" text ">

जब आप char * का उपयोग करते हैं (जैसे कि आपके चर pchar ) का उपयोग किया जाता है, और इसे एक स्ट्रिंग के रूप में इलाज करते समय प्रिंट अक्षर जब तक यह स्ट्रिंग टर्मिनेटर वर्ण ( '\ 0' ) नहीं मिलती। दुर्भाग्य से इस मामले में pchar केवल एक ही चरित्र के लिए अंक देता है, इसलिए आपके पास अपरिभाषित व्यवहार है, क्योंकि फ़ंक्शन आपके पास आवंटित स्मृति में वर्णों की तलाश में नहीं जाता है।

एक संकेतक को प्रिंट करने के लिए जिसे आपको इसे void * :

  std :: cout & lt; & lt; "पचर =" & lt; & lt; Std :: hex & lt; & lt; Reinterpret_cast & lt; void * & gt; (पीचर) & lt; & lt; '\ N';  

जब आप चर pchar का पता मुद्रित करते हैं (जब आप & amp; pchar प्रिंट करते हैं) तब काम करता है क्योंकि तब अभिव्यक्ति का प्रकार चार ** है, जिसके पास कोई सीधी अधिभार नहीं है, और इसके बजाय जेनेरिक पॉयंटर अधिभार (मामले 7 में) का उपयोग करता है।


Comments