C++ int main (int argc, char *argv[]) - argv 是 c 风格的数组吗?
Posted
技术标签:
【中文标题】C++ int main (int argc, char *argv[]) - argv 是 c 风格的数组吗?【英文标题】:C++ int main (int argc, char *argv[]) - is argv a c style array? 【发布时间】: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**
类型指针的指针不同。
【参考方案1】:
没错,argv
是指向指针数组的第一个元素的指针,每个指针(最后一个除外)又是指向给出相应命令的字符串中的第一个字符的指针行参数。
函数参数不能是数组。
【讨论】:
我删除了关于没有数组类型参数这样的东西的答案,因为即使这是一个东西,由于数组到指针的转换,它仍然可以工作。主要问题是内部类型是数组,而不是指针。以上是关于C++ int main (int argc, char *argv[]) - argv 是 c 风格的数组吗?的主要内容,如果未能解决你的问题,请参考以下文章
int main(int argc,char **argv)[重复]
C语言 main 函数参数 main(int argc, char *argv[])
C语言 main 函数参数 main(int argc, char *argv[])