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函数中的输入/输出参数可以以多种方式应用。