首页 > 解决方案 > C:参数传递与返回值的优点?

问题描述

我最近从 C++ 的背景开始使用 C,我总是注意到基于 C 的库使用“按参数传递”而不是返回类型。

我的意思是,考虑这个功能。

int getSum(int a, int b){
    return a + b;
}

这将被写为

void getSum(int* out, int a, int b){
    *out = a + b;
}

这只是一个例子,只是为了澄清一些事情。

使用第二种方法比第一种方法有什么优势吗?

标签: cpointersmethods

解决方案


真的没什么优势。它显着降低了调用函数的灵活性。例如,您可以这样做:

if (getSum (a, b) < 20)

但是对于第二个,你必须这样做:

int q;
getSum (&q, a, b);
if (q < 20)

这不仅是更多的代码行,而且更难遵循其逻辑。

想象一下这段代码在第二个版本中会是什么样子:

if ((getSum(a, b) < getSum(c, d)) ||
    (getSum(a, c) < getSum(b, d))

呸。

第二个函数唯一可能的优点是您 100% 确定任何调用者都知道返回类型,因为您只能使用int *. 但这根本不是优势。


推荐阅读