2012-04-05 14 views
11

सी ++ कार्यक्रमों में से एक में, मैं एक समारोह के प्रोटोटाइप देखा: int Classifier::command(int argc, const char*const* argv)सी ++: स्थिरांक चार * स्थिरांक * का अर्थ

const char*const* argv क्या मतलब है? क्या यह const char* argv[] जैसा ही है? const char** argv का भी यही अर्थ है?

+7

http://cdecl.org/ –

+1

@LuchianGrigore हां, मिल गया यह –

+1

पढ़ें (मुख्य रूप से) सही करने के लिए एक स्थिरांक सूचक के लिए छोड़ दिया करने के लिए, सूचक से (स्थिरांक वर्ण) । –

उत्तर

5

नहीं, यह const char *argv[] जैसा नहीं है। const अपसंदर्भन की विशेष स्तर पर dereferenced मूल्य के संशोधन प्रतिबंधित हैं:

**argv = x; // not allowed because of the first const 
*argv = y; // not allowed because of the second const 
argv = z; // allowed because no const appears right next to the argv identifier 
3
C++ FAQ Lite से

:

फ्रेड स्थिरांक * स्थिरांक पी का अर्थ है "पी एक निरंतर फ्रेड के लिए एक निरंतर सूचक है": आप सूचक पी ही नहीं बदल सकते हैं, और न ही आप पी के माध्यम से फ्रेड वस्तु को बदल सकते हैं । एक (गैर स्थिरांक) एक स्थिरांक चार करने के लिए एक स्थिरांक सूचक को सूचक:

const char * const *char const * const * के समान है।

const char *char const * के समान है: एक (गैर-कॉन्स) पॉइंटर एक कॉन्स चार में।

const char * *char const * * के समान है: एक (गैर-कॉन्स) पॉइंटर एक (गैर-कॉन्स) पॉइंटर को एक कॉन्स चार में।

3

एक संकेतक है कि एक स्ट्रिंग के लिए परिवर्तन नहीं करता है कि परिवर्तन नहीं करता है:

const char* aString ="testString"; 

aString[0] = 'x'; // invaliv since the content is const 
aString = "anotherTestString"; //ok, since th content doesn't change 

const char const* bString = "testString"; 
bString [0] = 'x'; still invalid 
bString = "yet another string"; // now invalid since the pointer now too is const and may not be changed. 
3

const char*const* argv "का अर्थ निरंतर सूचक को सूचक निरंतर char "। यह const char *argv[] के रूप में "एक ही" नहीं है, लेकिन यह कुछ हद तक संगत है:

void foo(const char *const *argv); 

void bar(const char **argv) 
{ 
    foo(argv); 
} 

ठीक संकलित करता है। (रिवर्स एक const_cast बिना संकलन नहीं होगा।)

संबंधित मुद्दे