必须有一些我误解的东西,为什么这不会返回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;
}
}
答案 0 :(得分:3)
原始类型(如浮点数)是“按值传递”,func()实际上是在修改i的副本。
答案 1 :(得分:0)
按价值传递。无论您在函数中进行了哪些更改,都会对传递的值进行更改,但不会对实际值进行更改。
要使其修改原始变量的值,您应该使用指向它的指针,并将该指针的值传递给func
。
使您的功能如下:
void func(float *i) {
int j;
for (j = 0; j < 5; j++) {
*i += 2;
}
}
并将此功能称为:
func(&i);