のconst char型*のCONSTの意味、私は、関数のプロトタイプを見た:int Classifier::command(int argc, const char*const* argv)
C++:C++プログラムの一つで*
const char*const* argv
は何を意味するのでしょうか? const char* argv[]
と同じですか? const char** argv
も同じ意味ですか? C++ FAQ Liteから
のconst char型*のCONSTの意味、私は、関数のプロトタイプを見た:int Classifier::command(int argc, const char*const* argv)
C++:C++プログラムの一つで*
const char*const* argv
は何を意味するのでしょうか? const char* argv[]
と同じですか? const char** argv
も同じ意味ですか? C++ FAQ Liteから
いいえ、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 * constのpは、「pは一定のフレッドへの定数ポインタである」意味:あなたはポインタp自体を変更することはできません、またあなたがたp経由フレッドオブジェクトを変更することができます。
const char * const *
はchar const * const *
と同じです:const charへのconstポインタへの(非const)ポインタ。
const char *
は、char const *
と同じです:const charへの(非const)ポインタ。
const char * *
は、char const * *
と同じです:(非const)const 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/ –
@LuchianGrigore yoot、got –
(主に)右から左へ、constポインタへのポインタ(const char) 。 –