【发布时间】:2018-11-17 18:00:46
【问题描述】:
定义有区别吗:
void example(int usuario[]);
或
void example(int usuario[SIZE]);
【问题讨论】:
标签: c arrays parameter-passing
定义有区别吗:
void example(int usuario[]);
或
void example(int usuario[SIZE]);
【问题讨论】:
标签: c arrays parameter-passing
在c 中,数组名称在传递时衰减为指针。在usario 的两个示例中使用sizeof 将返回一个int 指针的大小,而不管SIZE。所以这两个例子是相同的,并且是相同的
void example (int *usario)
此上下文中的[] 语法纯粹是语法糖。从功能上讲,指针将是您实际使用的 - [] 或 [SIZE] 仅对未来的程序员有用,以便看到您期望长度为 SIZE 的数组。这根本不会由编译器强制执行。
在现代编译器上,如果您在函数中执行 sizeof(usario),则会收到警告 - 您可以在两个示例中尝试。
【讨论】: