C中将数组传递给函数的方法不同
定义以下内容之间是否有区别:C中将数组传递给函数的方法不同,c,arrays,parameter-passing,C,Arrays,Parameter Passing,定义以下内容之间是否有区别: void example(int usuario[]); 或 在c中,数组名在传递时衰减为指针。在usario上的两个示例中使用sizeof将返回int指针的大小,而不管大小如何。所以这两个例子是相同的,和 void example (int *usario) 此上下文中的[]语法纯粹是语法上的糖分。从功能上讲,指针就是您实际使用的指针-[]或[SIZE]只对未来的程序员有用,因为他们希望看到您一个长度大小的数组。编译器根本不会强制执行此操作 在现代编译器上,如
void example(int usuario[]);
或
在
c
中,数组名在传递时衰减为指针。在usario
上的两个示例中使用sizeof
将返回int指针的大小,而不管大小如何。所以这两个例子是相同的,和
void example (int *usario)
此上下文中的[]
语法纯粹是语法上的糖分。从功能上讲,指针就是您实际使用的指针-[]
或[SIZE]
只对未来的程序员有用,因为他们希望看到您一个长度大小
的数组。编译器根本不会强制执行此操作
在现代编译器上,如果您在函数中执行了sizeof(usario)
,您将收到警告-您可以用这两个示例进行尝试。在c
中,数组名在传递到指针时衰减。在usario
上的两个示例中使用sizeof
将返回int指针的大小,而不管大小如何。所以这两个例子是相同的,和
void example (int *usario)
此上下文中的[]
语法纯粹是语法上的糖分。从功能上讲,指针就是您实际使用的指针-[]
或[SIZE]
只对未来的程序员有用,因为他们希望看到您一个长度大小
的数组。编译器根本不会强制执行此操作
在现代编译器上,如果您在函数中执行了sizeof(usario)
,您将得到一条警告-您可以用两个示例进行尝试。检查此答案检查此答案