【发布时间】:2015-01-28 14:01:06
【问题描述】:
代码 1
#include<stdio.h>
int main(int argc, char *argv[])
{
int j;
printf("%d", argv[1][0]);
return 0;
}
代码 2
#include<stdio.h>
int main(int argc, char **argv)
{
int j;
printf("%d", argv[1][0]);
return 0;
}
CODE 1 和 CODE 2 都给出相同的输出。但是CODE 1和CODE 2中main函数的argument 2是不同的。指针数组在编译时在数据部分上方创建。 argv 是指针数组。然后我们应该在主函数中将参数声明为指向字符的指针,即**argv。在 CODE 1 中声明如何正确?
【问题讨论】:
-
就编译器而言,第二个参数没有任何不同,即
char *argv[]仅相当于char **argv。这更像是首选编码风格的问题。
标签: c arrays pointers parameter-passing argv