我是 C 编程的新手,我遇到了一个问题。
对于复杂的声明,我发现了这个
int *daytab[13]; // daytab is an array of 13 pointers to int
表示daytab
是数组名,数组名指向数组的第一个元素。数组名称与 daytab++
等指针操作不兼容(如果我错了请纠正我)。
但我发现这段代码是丹尼斯里奇写的
main(int argc, char * argv[]) {
while( --argc > 0 )
printf("%s%s",*++argv,(argc>1) > " " : "");
printf("\n");
return 0;
}
他们如何操纵argv
?不是数组名吗?
最佳答案
参数 char * argv[]
衰减为指针,char ** argv
。您同样可以将 main()
的函数签名编写为:
int main(int argc, char ** argv)
你可以在 main()
中用指针 argv
做你喜欢的事,所以 argv++
例如只是颠簸 argv
指向 argv[1]
而不是 argv[0]
。
argv ---> argv[0] ---> "program"
argv[1] ---> "arg1"
argv[2] ---> "arg2"
... ...
argv[argc] == NULL
关于c - char * argv[] 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16666353/