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