【问题标题】:Difference in methods to pass array to function in C在 C 中将数组传递给函数的方法的差异
【发布时间】:2018-11-17 18:00:46
【问题描述】:

定义有区别吗:

void example(int usuario[]);

void example(int usuario[SIZE]);

【问题讨论】:

标签: c arrays parameter-passing


【解决方案1】:

c 中,数组名称在传递时衰减为指针。在usario 的两个示例中使用sizeof 将返回一个int 指针的大小,而不管SIZE。所以这两个例子是相同的,并且是相同的

void example (int *usario)

此上下文中的[] 语法纯粹是语法糖。从功能上讲,指针将是您实际使用的 - [][SIZE] 仅对未来的程序员有用,以便看到您期望长度为 SIZE 的数组。这根本不会由编译器强制执行。

在现代编译器上,如果您在函数中执行 sizeof(usario),则会收到警告 - 您可以在两个示例中尝试。

【讨论】:

    猜你喜欢
    • 2019-02-19
    • 1970-01-01
    • 2010-10-23
    • 2012-07-25
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多