【发布时间】:2014-01-10 19:16:35
【问题描述】:
以下内容无法编译:
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 样式数组,而是某种指针数组。有人可以确认吗?
谢谢你和问候。
【问题讨论】:
-
如果
argv是一个数组数组,那么内部数组的大小将是类型的一部分(并且它们都必须是相同的大小)。 -
arr衰减为指向char (*)[2]类型数组的指针,这与指向char**类型指针的指针不同。