【问题标题】:Is using multiple function parameters for the purpose of returning multiple values in C bad practice? [duplicate]是否使用多个函数参数来在 C 中返回多个值是不好的做法? [复制]
【发布时间】:2017-07-29 04:49:17
【问题描述】:

如果我有一个计算数组的最小值和最大值的函数,那么在函数参数中包含最小值和最大值是不好的做法,这样我就可以在函数运行时对其进行编辑。

所以我会void minmax(array, int min, int max)

min 和 max 变量将作为 null 发送,并在函数运行时更改。这样可以吗,还是我应该使用 malloc 来获取数组并返回指针?

【问题讨论】:

标签: c


【解决方案1】:

问:如果我有一个函数可以计算数组的最小值和最大值,那么在函数参数中包含最小值和最大值会是不好的做法

A:不,一点也不。这是完全合理的做法。

问:“所以我会有void minmax(array, int min, int max)...”

A:呃,没有。这不会将“min”和“max”传回给调用者。相反,您需要类似:

void minman(int * array, int * min, int * max);'

例如:

int myarray[] = {1, 2, 3};
int min, max;
minman(myarray, &min, &max);
...

【讨论】:

    【解决方案2】:

    这完全没问题,只是你需要 minmax 作为指针。如果他们只是普通的旧 int 就像你在那里一样,调用者将永远看不到你所做的更改。

    【讨论】:

      【解决方案3】:

      函数通过参数返回值并没有错。除了你写的代码不起作用 - 像这样改变它:

      void minmax(int *array, int *min, int *max)
      

      另见returning multiple values from a function

      【讨论】:

      • 如果答案以“我不认为……”之类的免责声明开头,那么这个问题太自以为是了。
      • 或者我的回答不应该以“我不这么认为”开头,而这个问题很好。
      • @Olaf 编辑了我的答案以消除任何疑问。
      • 那不是我的意思!免责声明是有充分理由的。只是不要回答离题的问题,而是标记它们。帮助保持本网站的质量!
      • @Olaf 我明白了……我明白了。但是,在我看来,有时这类问题是合理的。例如,Python 中对输入参数的类似修改虽然可能,但被一些人认为很好。在我看来,对每个用例的论点进行讨论很有用。
      猜你喜欢
      • 2013-01-27
      • 1970-01-01
      • 2014-11-01
      • 1970-01-01
      • 2013-08-31
      • 2019-06-08
      • 1970-01-01
      • 1970-01-01
      • 2014-10-23
      相关资源
      最近更新 更多