c - C:参数传递与返回值的优点?
问题描述
我最近从 C++ 的背景开始使用 C,我总是注意到基于 C 的库使用“按参数传递”而不是返回类型。
我的意思是,考虑这个功能。
int getSum(int a, int b){
return a + b;
}
这将被写为
void getSum(int* out, int a, int b){
*out = a + b;
}
这只是一个例子,只是为了澄清一些事情。
使用第二种方法比第一种方法有什么优势吗?
解决方案
真的没什么优势。它显着降低了调用函数的灵活性。例如,您可以这样做:
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 *
. 但这根本不是优势。
推荐阅读
- python - 比较两个列表中的值并从第三个列表中返回相似或最接近的值
- r - 如何用缺失值前后的平均值填充向量中的缺失值
- java - 没有可用的“ru.spb.repository.UserRepository”类型的合格bean:预计至少有1个有资格作为自动装配候选者的bean
- javascript - 对 DataTable 的默认更改
- vb.net - 如何用我自己的代码“替换”异常?
- .net - 解析 dacpac docker microsoft sql server 时出错
- reactjs - 打字稿:如何为泛型类型定义对象键的类型
- python - Python:如何为 pandas 数据框中的每个 ID 保存不同的 .csv?
- python - 迭代数据框并组合来自不同列的值
- google-apps-script - 我可以将预定义的字符串链接到 Google 电子表格中的输入吗