为什么数组通过引用传递,但是在C中隐式地传递结构?

他们为什么这样devise? 我很困扰。

更新:我真的想知道这个问题的答案。 我谷歌search,但我可以find没有什么相当有用的。

我想可能有两个原因:

:技术。 也许这很难通过编译器实现(结构传递引用)。 如果答案是这个。 请解释一下。

:适合使用(编程)。 我认为,如果结构通过引用传递,它更优雅(或漂亮?)。 我找不到一些显示优势的例子(支撑按值传递)。 我的编程生涯不长。 实际上,我更喜欢将struct作为指针传递给函数(指针占用堆栈空间较less)。

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

所以现在应该很明显,当你通过它的名字传递一个数组的时候,你实际上传递了这个内存地址的一个副本。

然而,一个结构是一组对象,所以当你传递一个结构名称时,你传递了该对象的副本。

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

数组通过,实际上是通过值来传递地址。 在c中,没有通过引用。

我认为没有通过数组的整体价值的原因是

第一,表现。

其次,由于我们可以使用指针作为数组,所以编译器无法知道指针指向的内存大小,所以不能将数组中的所有值传递给函数。 C绝对可以被设计为知道数组的大小,并传递数组的值。但是,我们不能以数组的方式使用指针,我们不能使用任何malloc数组。