为什么数组通过引用传递,但struct在C中隐式传递值?

lou*_*xiu 5 c linux objective-c

为什么他们这样设计?我很迷茫.

更新:我真的想知道问题的答案.我用Google搜索,但我找不到任何有用的东西.

我想可能有两个原因:

:技术.也许编译器很难实现(struct by reference).如果答案是这个.请解释一下.

:适合使用(编程).我认为,如果struct通过引用传递,它会更优雅(或更漂亮?)我找不到一些显示优势的例子(strut pass by value).我的编程生涯不是很长.在实践中,我更喜欢将struct作为指针传递给函数(指针占用堆栈上较少的空间).

nim*_*ims -1

您可以将数组想象为包含连续内存位置的集合,数组的名称作为指向该集合的第一个内存地址的指针。

因此,现在应该很明显,当您通过名称传递数组时,实际上是在传递该内存地址的副本。

然而,结构是一组对象,因此当您传递结构名称时,您正在传递该集合中对象的副本。

PS:这是一个非常基本的C概念,也是一个明显的疑问,最好阅读一本好的C书籍来进一步理清你的概念。