在函数参数列表中,输出参数的位置应该放在哪里?

8

我试图决定关于我们的C/C++代码中函数参数输出使用的政策。

显然,该政策应指示所有用于输出的参数应在函数参数列表的末尾或开头分组放置,但我不确定有任何好的理由偏好其中任一位置。

你知道有没有偏向于将它们分组放在开始或结尾的任何理由吗?


3
对于C++,我认为最好尽量避免使用这种输出参数。如果需要返回多个值,可以创建一个结构体或元组,并将其作为返回类型。 - Vaughn Cato
3个回答

4

这只是我的个人意见,但如果它反映了复制或分配语义,那么我更喜欢把它们放在开头,就像C标准库中的字符串和某些stdio函数一样:

strcpy(dest, src);

看起来像是。
dest = src;

并且

fgets(buf, sizeof(buf), file);

看起来像是。
buf = contents_of(file);

如果,出于某些原因不是这种情况,那么我喜欢将事物组织成首先输入,然后输出,因此我将输出参数放在参数列表的末尾。


3

让我提一下另一个点:

输入参数可以有默认值。要使用此功能,该(或这些)参数需要位于函数参数列表的末尾。
因此,出于与user529758已经表明的相同原因,我也开始将输出参数放在参数列表的开头。


2

有两种不同的思路,这在C库中体现为不同的函数:

赋值顺序

memmove(target, source, size);

输入再输出

sscanf(source, format, &out1, &out2, &out3);

如果存在多个输出,则通常将它们放在最后。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接