【发布时间】:2013-05-21 09:19:02
【问题描述】:
我是 C 编程新手,遇到了一个问题。
如果声明复杂,我发现了这个
int *daytab[13]; // daytab is an array of 13 pointers to int
表示daytab是数组名,数组名指向数组的第一个元素。数组名称与 daytab++ 等指针操作不兼容(如果我错了,请纠正我)。
但我发现这段代码是用 Dennis Ritchie 写的
main(int argc, char * argv[]) {
while( --argc > 0 )
printf("%s%s",*++argv,(argc>1) > " " : "");
printf("\n");
return 0;
}
他们如何操纵argv?不是数组名吗?
【问题讨论】:
-
它是一个指向系统传递给您的应用程序的所有参数的 (char) 数组的指针,argc 包含相同的计数
-
在包含
printf的行中 - 最后一位不应该是(argc>1) ? " " : ""吗?独立的“>”似乎不正确。对我来说,它看起来应该在打印时在参数之间放置一个空格,但在最后一个 arg 之后没有空格。 -
我非常震惊,四年过去了,没有引用 Clockwise Spiral Rule 来解释 C 变量声明。哦,等等... :-)
-
解释 C 变量声明的绝佳资源cseweb.ucsd.edu/~ricko/rt_lt.rule.html
标签: c arrays pointers kernighan-and-ritchie