C输入和输出函数的参数

对于我正在编写的课程项目,我的老师的函数风格指南说“输入参数必须出现在out参数之前”。 我不太清楚这是什么意思?

如果我有一个function

 void foo(int a, int b, int* c) { *c = a+b; } 

在上面的情况中,a和b是输入,而c是输出。

通常,如果要返回数组,则以这种方式使用“输出”。

C实际上没有“输入”和“输出”参数,至少不是直接的。 (有些语言可以。)所有参数都按值传递,这意味着函数获取参数的值,但对参数的任何修改对调用者都是不可见的。

(术语:A *参数“是函数体中的命名对象,在括号之间定义; 参数是函数调用中的表达式。每个参数都被计算,结果值被赋值给相应的参数。)

但是,您可以使用指针模拟“输出”参数。 例如:

 void foo(int in, int *out); 

指针按值传递,但函数可以通过指向*out的指针赋值,调用者可以看到该值。 ( out也可以用作输入参数,这对于传递指针更有效的大型类型或输入/输出参数是常见的。)

因此“输出参数必须出现在out参数之前”可能意味着非指针参数应该出现在用于间接返回值的指针参数之前。

通常用于void函数。

 void some_function (int input_1, int input_2, char* output) { /* Do things with input_1 and input_2. */ /* Modify "output". */ } 

我刚给出的代码非常模糊,void函数中的输入/输出参数可以以多种方式应用。