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

プリミティブ型 (float など) は「値渡し」であり、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 に答える