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