私が誤解しているものがあるに違いありません.なぜこれは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;
}
}
プリミティブ型 (float など) は「値渡し」であり、func() は実際には i のコピーを変更しています。
値渡しです。関数で行っている変更はすべて、渡された値のコピーに対して行われますが、実際の値に対しては行われません。元の変数の値を変更するには、その変数へのポインターを使用し、そのポインターの値を に渡しますfunc
。
以下のように関数を作成します。
void func(float *i) {
int j;
for (j = 0; j < 5; j++) {
*i += 2;
}
}
そして、この関数を次のように呼び出します。
func(&i);