argv
「配列の最初のインデックスへのポインタ」(char* argv
)ではなく、「配列の最初のインデックスへのポインタへのポインタ」として宣言されているのはなぜですか?
ここで「ポインターからポインター」の概念が必要なのはなぜですか?
char* argv[]
スペースを間違った場所に置きます。と言うとchar *argv[]
、これは「式*argv[n]
は型の変数である」ことを意味することは明らかですchar
。ポインターとは何か、ポインターへのポインターは何かなどを理解しようとすることに巻き込まれないでください。宣言は、このことに対して実行できる操作を示しています。
char * argv[]
同様のC ++コンストラクトと精神的に比較すると、std::string argv[]
解析が容易になる場合があります。...実際にそのように書き始めないでください!
char &func(int);
ことはありませんどの&func(5)
タイプを持っていますchar
。
char* argv[]
またはの正しい説明ではありませんchar**
。それは、文字へのポインターへのポインターです。具体的には、外側のポインターは配列内の最初のポインターを指し、内側のポインターはヌル終端文字列の最初の文字を指します。ここに関係するインデックスはありません。