Почему 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**
. Это указатель на указатель на символ; в частности, внешний указатель указывает на первый указатель в массиве, а внутренние указатели указывают на первые символы строк с нулевым символом в конце. Здесь нет индексов.