在C++程序中的一個,我看到了一個函數原型:int Classifier::command(int argc, const char*const* argv)
C++:爲const char * const的*的含義
是什麼const char*const* argv
意思?是否與const char* argv[]
相同? const char** argv
也是一樣的嗎?
在C++程序中的一個,我看到了一個函數原型:int Classifier::command(int argc, const char*const* argv)
C++:爲const char * const的*的含義
是什麼const char*const* argv
意思?是否與const char* argv[]
相同? const char** argv
也是一樣的嗎?
不,它與const char *argv[]
不一樣。所述const
在解引用的特定電平禁止解除引用值的修改:
**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
弗雷德常量* const p表明 「p是一個常量指針到常量弗雷德」:你不能改變指針p,也不能通過p修改Fred對象。
const char * const *
與char const * const *
相同:指向常量字符的常量指針的非常量指針。
const char *
與char const *
相同:指向const char的(非const)指針。
const char * *
與char const * *
相同:指向常量字符的非常量指針的非常量指針。
不改變爲一個字符串的指針不會改變:
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.
const char*const* argv
指「指針恆定指針到不變的char
「。這不是「同」爲const char *argv[]
,但它在一定程度上兼容:
void foo(const char *const *argv);
void bar(const char **argv)
{
foo(argv);
}
編譯就好了。 (反過來不會編譯沒有const_cast
。)
http://cdecl.org/ – 2012-04-05 13:09:33
@LuchianGrigore是的,知道了它 – 2012-04-05 13:10:37
從右到左閱讀(主要),const指針指向(const char) 。 – 2012-04-05 13:51:08