Code Fix

中級参照渡しのつもりが値渡しで変更が反映されないバグ › パターン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

空欄を埋めてコンパイル・実行を通す

広告
広告スロット(未設定)

参照渡しのつもりが値渡しで変更が反映されないバグ

値渡しでは引数はコピーされるため、関数内での変更は呼び出し元に影響しません。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)