【发布时间】:2012-12-18 11:13:19
【问题描述】:
在我的一些 C 库上工作时,我正在磨练我的 C 技能。在完成了第一个工作实现之后,我现在正在检查代码以使其更高效。目前我的主题是通过引用或值传递函数参数。
我的问题是,为什么我会在 C 中按值传递任何函数参数?代码可能看起来更干净,但它不会总是比通过引用传递效率低吗?
【问题讨论】:
-
每个参数在 C 中按值传递。如果它不大于指针,传递副本的效率肯定不会低。
-
更不用说会有多不方便了:
int get_int(); void process_int_A(const int x); void process_int_B(const int* const x);。比较:void foo(){ process_int_A(get_int()); }与void foo(){ const int result = get_int(); process_int_A(&result); }。需要为每个返回值显式的中间存储将是致命的。在 C++ 中这不是什么问题,在 C++ 中,你有可以绑定到临时值的“真实”引用。
标签: c function pass-by-reference pass-by-value