वे समान नहीं हैं।
पहला कॉन्स्ट-पॉइंटर-टू-चार नामित करता है, दूसरा पॉइंटर-टू-कॉन्स्ट-चार है।
दाएं से बाएं पढ़ने का प्रयास करें:
const char *p; // p is a pointer to char which is const
char const *p; // p is a pointer to const char (same as previous)
char * const p; // p is a const pointer to char
char const * const p; // p is a const pointer to const char
एक भी उर्फ c
में typedef typedef char* c
"चार सूचक" का उपयोग कर आप अर्थ पैक द्वारा:
const c p; // p is a const [c] --> p is a const [pointer to char]
अतिरिक्त स्पष्टीकरण :
typedefs में जगह-विस्तार नहीं कर रहे हैं मैक्रो नहीं है की तरह है, यानी
const c p;
वास्तव में हो जाता है
const [char*] p;
यह नहीं बन जाता है
const char* p; // Nope.
यह मैक्रो की तरह का विस्तार न करें आपके दिमाग में, टाइपपीफ के साथ, आपने char
और *
को एक साथ बांध लिया है और एक परमाणु बनाया है। जबकि ptr2
एक (const char) *
है स्थिरांक है, सूचक का लक्ष्य अर्थ
स्रोत
2012-08-08 12:55:17
यह दिलचस्प है के रूप में ही होना चाहिए। मैं वास्तव में हैरान हूँ। +1 –
मुझे पता है, लेकिन जब इसे कंपाइलर द्वारा * कॉन्स char * * के रूप में नहीं माना जाना चाहिए, क्योंकि * सी * * char * * में विस्तारित किया जा रहा है, यही वह है जो मैं पूछ रहा हूं। – cirronimbo
@cirronimbo: मेरे उत्तर में "टाइपपीफ का उपयोग करके" अनुभाग देखें। –