0

一定有什么我误解了,为什么这不返回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;
    }
}
4

2 回答 2

3

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

于 2012-08-13T06:04:36.180 回答
0

它是按值传递的。无论您在函数中所做的任何更改都是对传递值的副本而不是实际值进行的。要使其修改原始变量的值,您应该使用指向它的指针,并将该指针的值传递给您的func.

使您的功能如下所示:

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

         *i += 2;
    }
}

并将此函数称为:

func(&i);
于 2012-08-13T06:13:20.590 回答