【发布时间】:2011-03-03 22:08:33
【问题描述】:
谁能告诉我为什么我要费心在函数头中指定 C 数组参数的大小?例如:
void foo (int iz[6]) { iz[42] = 43; }
与:
int is[2] = {1,2,3};
我们得到一个有用的错误。也许它有助于评论/记录?
【问题讨论】:
-
现在我发现了这个类似的问题:[stackoverflow.com/questions/2374875/… 这主要是一个不确定的评论,尽管 c99 有一些补充。
-
当你传递一个数组时,它会衰减为一个指向数组第一个元素的指针。所以,数组的大小肯定也应该是接收数组的函数参数。
-
根据 Dennis Ritchie 的说法,该语法是很久以前试图简化从 B(C 的前身)迁移到 C 的人工制品。最好假装该语法是不允许的,并且永远不要使用它。
-
开个小玩笑:template
void bar(int iz[N]) { iz[N+1] = 44; }
标签: c arrays function-parameter