从传递的参数中检索值

时间:2012-08-13 06:00:03

标签: c arguments return

必须有一些我误解的东西,为什么这不会返回10?

int main() {

    float i = 0;
    func(i);
    printf("%f", i);

    return 0;
}


void func(float i) {

    int j;
    for (j = 0; j < 5; j++) {

         i += 2;
    }
}

2 个答案:

答案 0 :(得分:3)

原始类型(如浮点数)是“按值传递”,func()实际上是在修改i的副本。

答案 1 :(得分:0)

按价值传递。无论您在函数中进行了哪些更改,都会对传递的值进行更改,但不会对实际值进行更改。 要使其修改原始变量的值,您应该使用指向它的指针,并将该指针的值传递给func

使您的功能如下:

void func(float *i) {
    int j;
    for (j = 0; j < 5; j++) {

         *i += 2;
    }
}

并将此功能称为:

func(&i);