【发布时间】:2010-01-19 06:31:43
【问题描述】:
在 C 中,数组作为指针传递给函数。结构可以通过值或地址(指针)传递给函数。为什么我们不能按值传递数组但我们可以按值传递structre,有什么具体原因吗?
【问题讨论】:
在 C 中,数组作为指针传递给函数。结构可以通过值或地址(指针)传递给函数。为什么我们不能按值传递数组但我们可以按值传递structre,有什么具体原因吗?
【问题讨论】:
在 C 中,一切都是按值传递的。还有一条规则说,在大多数情况下,数组的名称等价于指向其第一个元素的指针。将数组传递给函数就是这样的上下文。
所以,特例不是通过引用传递数组,特例是the rule about arrays decaying to pointers。这给人的印象是数组是通过引用传递的(实际上是这样,但现在你知道为什么了!)
我上面链接中的帖子更详细地解释了不同上下文中数组的类型。
【讨论】:
comp.lang.c,然后是标准。一个非常好的描述是web.torek.net/torek/c/expr.html#therule。其实elf.torek.net/torek/c都很好。