他们为什么要这样设计?我很困扰。
更新:我真的很想知道这个问题的答案。我用谷歌搜索,但我找不到任何有用的东西。
我觉得可能有两个原因:
一:技术。也许编译器很难实现(结构通过引用传递)。如果答案是这个。请解释一下。
二:适合使用(编程)。我认为,如果 struct 通过引用传递,它会更优雅(或更漂亮?)。我找不到一些显示优势的例子(strut pass by value)。我的编程生涯并不长。在实践中,我更喜欢将 struct 作为指针传递给函数(指针在堆栈上占用的空间更少)。
他们为什么要这样设计?我很困扰。
更新:我真的很想知道这个问题的答案。我用谷歌搜索,但我找不到任何有用的东西。
我觉得可能有两个原因:
一:技术。也许编译器很难实现(结构通过引用传递)。如果答案是这个。请解释一下。
二:适合使用(编程)。我认为,如果 struct 通过引用传递,它会更优雅(或更漂亮?)。我找不到一些显示优势的例子(strut pass by value)。我的编程生涯并不长。在实践中,我更喜欢将 struct 作为指针传递给函数(指针在堆栈上占用的空间更少)。
您可以将数组想象为一个包含连续内存位置的集合,其中数组的名称作为指向该集合的第一个内存地址的指针。
所以现在应该很明显了,当您通过数组的名称传递数组时,实际上是在传递该内存地址的副本。
然而,结构是一组对象,因此当您传递结构名称时,您传递的是该集合中对象的副本。
PS:这是一个非常基本的 C 概念和一个明显的疑问,最好阅读一本好的 C 书籍以进一步清除您的概念。
数组传递,其实就是按值传递地址。在 c 中,没有通过引用传递。
我认为不传递数组的整个值的原因是
首先,性能。
其次,由于我们可以将指针用作数组,编译器无法知道指针指向的内存大小,因此无法将数组中的所有值传递给函数。C绝对可以设计为知道数组的确切大小,并传递数组的值。但是,我们不能以数组方式使用指针,我们不能使用任何malloc数组。