5

他们为什么要这样设计?我很困扰。

更新:我真的很想知道这个问题的答案。我用谷歌搜索,但我找不到任何有用的东西。

我觉得可能有两个原因:

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

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

4

2 回答 2

-1

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

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

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

PS:这是一个非常基本的 C 概念和一个明显的疑问,最好阅读一本好的 C 书籍以进一步清除您的概念。

于 2012-06-01T03:13:42.563 回答
-2

数组传递,其实就是按值传递地址。在 c 中,没有通过引用传递。

我认为不传递数组的整个值的原因是

首先,性能。

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

于 2012-06-01T03:22:01.847 回答