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