<分区>
他们为什么要这样设计?我很困惑。
更新:我真的很想知道问题的答案。我用谷歌搜索,但找不到任何有用的东西。
我认为可能有两个原因:
一:技术。也许编译器很难实现(通过引用传递结构)。如果答案是这个。请解释一下。
二:适合使用(编程)。正如我认为的那样,如果 struct 通过引用传递,它会更优雅(或更漂亮?)。我找不到一些显示优势的示例(strut 按值传递)。我的编程生涯不是很长。在实践中,我更喜欢将 struct 作为指针传递给函数(指针在堆栈上占用的空间更少)。
标签 objective-c c linux
<分区>
他们为什么要这样设计?我很困惑。
更新:我真的很想知道问题的答案。我用谷歌搜索,但找不到任何有用的东西。
我认为可能有两个原因:
一:技术。也许编译器很难实现(通过引用传递结构)。如果答案是这个。请解释一下。
二:适合使用(编程)。正如我认为的那样,如果 struct 通过引用传递,它会更优雅(或更漂亮?)。我找不到一些显示优势的示例(strut 按值传递)。我的编程生涯不是很长。在实践中,我更喜欢将 struct 作为指针传递给函数(指针在堆栈上占用的空间更少)。
最佳答案
您可以将数组想象成一个包含连续内存位置的集合,数组名称作为指向该集合第一个内存地址的指针。
所以现在应该很明显,当您通过名称传递数组时,您实际上是在传递该内存地址的副本。
然而,结构是一组对象,因此当您传递结构名称时,您传递的是该集合中对象的副本。
PS:这是一个非常基本的 C 概念和一个明显的疑问,最好阅读一本好的 C 书籍以进一步理清您的概念。
关于objective-c - 为什么数组按引用传递,而结构在 C 中隐式按值传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10843904/