4.6 C语言有“按引用传递”吗?

真的没有。

严格地讲, C 总是按值传递。你可以自己模拟按引用传递, 定义接受指针的函 数, 然后在调用时使用& 操作符。事实上, 当你向函数传入数组(传入指针的情况 参见问题6.4 及其它) 时, 编译器本质上就是在模拟按引用传递。但是C 没有任何 真正等同于正式的按引用传递或C++ 的引用参数的东西。另一方面, 类似函数的 预处理宏可以提供一种“按名称传递”的形式。

参见问题4.4 和20.1。