c++ - Pointer dereferencing -


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

  • 1 उत्तर
  char * m_chString = "asd"; Cout & lt; & lt; m_chString; // प्रिंट एड्स कूट & lt; & lt; * m_chString; // एक पूर्णांक nValue = 7; Int * pnPtr = & amp; nValue; Cout & lt; & lt; * pnPtr; // प्रिंट 7 cout & lt; & lt; pnPtr; // nValue का पता प्रिंट करता है  

मैंने दो उदाहरण दिए, पहले स्ट्रिंग के पॉइंटर पॉइंट में, और दूसरे में, सूचक एक पूर्णांक मान को प्रिंट करता है।
मेरा प्रश्न यह है कि, पहला उदाहरण से क्यों cout & lt; & lt; m_chString; मेरी स्ट्रिंग का पता प्रिंट नहीं करता है दूसरे उदाहरण में अगर मैं pnPtr प्रिंट होता / रही हूं? क्या pnPtr पते को इंगित नहीं करता?

< P>

इसका कारण यह है कि std :: cout एक चार * एक संकेतक के रूप में (पहला अक्षर) को सी शैली स्ट्रिंग का इलाज करेगा और इसे प्रिंट करें।

आप इस पते को प्रिंट कर सकते हैं: -

  cout & lt; & lt; (शून्य *) m_chString;  

या यदि आप महान सी ++ प्रशंसक हैं तो

  cout & lt; & lt; Static_cast & lt; कॉन्स्ट व्हॉइड * & gt; (M_chString);  

Comments