C输入和输出函数的参数

时间:2017-02-22 23:02:14

标签: c

对于我正在编写的课程项目,我的老师的功能样式指南说“输入参数必须出现在输出参数之前”。我不太清楚他们的意思是什么?

3 个答案:

答案 0 :(得分:4)

如果我有一个功能

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

在上述情况下,a和b是输入,而c是输出。

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

答案 1 :(得分:1)

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

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

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

void foo(int in, int *out);

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

所以"输入参数必须出现在输出参数之外"可能意味着非指针参数应该出现在用于间接返回值的指针参数之前。

答案 2 :(得分:1)

对于void函数,这通常是

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

    /* Modify "output". */
}

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