中級 › 参照渡しのつもりが値渡しで変更が反映されないバグ › パターン3
参照渡しのつもりが値渡しで変更が反映されないバグ
関数の引数を値渡し(int n)で受け取っているのに、関数の中身を書き換えたつもりで呼び出し元の変数まで変わることを期待してしまうバグです。
1 #include <iostream> 2 void reset(_________ n) { ^ 3 n = 0; 4 } 5 int main() { 6 int score = 77; 7 reset(score); 8 std::cout << score << std::endl; 9 return 0; 10 }
出力: 77(変更されていない)期待: 0
空欄を埋めてコンパイル・実行を通す
呼び出し元の変数を関数から変更したいときは、引数の型を参照(&)にする必要があります。
次の問題