prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 4.11

QC 语言有“引用传递”吗?


A严格来说,没有。

严格来说,C 语言始终使用值传递。你可以通过定义接受指针的函数来自己模拟引用传递,然后在调用时使用&运算符,当将数组传递给函数时,编译器实际上会为你模拟它(通过传递指针,参见问题 6.4 及相关问题)。

从另一个角度看,如果一个参数的类型是,例如,int *那么传递的是一个指向整数的指针,而传递的这个指针本身是按值传递的,并没有实现真正的引用传递。

从根本上说,C 语言没有任何真正等同于正式的引用传递或 C++ 的引用参数的功能。(另一方面,类似函数的预处理器宏可以提供一种“名字传递”的形式。)

另请参阅问题 4.87.912.2720.1

其他链接:一篇我的消息进一步解释了一个函数如何修改调用者传递的数组。

参考文献:K&R1 第 1.8 节 pp. 24-5,第 5.2 节 pp. 91-3
K&R2 第 1.8 节 pp. 27-8,第 5.2 节 pp. 95-7
ISO 第 6.3.2.2 节
H&S 第 9.5 节 pp. 273-4


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管