以下内容无法编译:
int main (int argc, char *argv[]) {
char arr[2][2];
char **ptr = arr;
return 0;
}
但以下情况确实如此:
int main (int argc, char *argv[]) {
char **ptr = argv;
return 0;
}
因此我得出结论,argv不是一个c样式数组,它存储为单个内存块,而是某种指针数组。有人可以证实吗?
谢谢你和问候。
答案 0 :(得分:5)
这是正确的,argv
是指向指针数组的第一个元素的指针,每个指针轮流(除了最后一个)是一个指向字符串中第一个字符的指针,给出了各自的命令行参数。
函数参数不能是数组。