- # C言語/C++入門 > 関数と変数のスコープ
参照型の引数で関数定義
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
参照型の変数は、関数の引数や関数の戻り値で宣言してやると、上手く活用できる場合があります。
スポンサーリンク
#include <iostream> // カウントアップ。だが上手く動かない void increment(int count) { ++count; } int main() { int num = 0; increment(num); std::cout << num << "\n"; // 1を期待したが・・・ return (0); }
上記コードは、カウントを1つアップするincrement関数を定義し、それを呼び出すことで、「1」が表示されることを期待したプログラムです。
しかし、実行結果は・・・
0
0のままで、期待したとおりの動作とはなっていません。
これは、C++がデフォルトで引数の渡し方が、値渡し(値をコピーして渡す)になっているからです。
つまり、countにnumの値がコピーされて(int count = num;)、countは1カウントアップするが、numは0のままとなっているからです。
期待した動作を得るには、以下のように引数を参照型とします。
#include <iostream> // カウントアップ。今度は動く void increment(int& count) { ++count; } int main() { int num = 0; increment(num); std::cout << num << "\n"; // 1を出力 return (0); }
実行結果。
1
今度は、int& count = num; と参照で渡されるため、期待した結果が得られます。
スポンサーリンク
>> 次の記事 : 参照型の戻り値で関数定義・参照戻し
<< 前の記事 : const宣言の引数を持つ関数
- - 関連記事 -
- 再帰関数
- 関数の引数型/値呼び出し(値渡し)・参照呼出し(参照渡し)・配列
- インライン関数・inline
- デフォルト引数・定義された引数を使用しない関数
- 関数のオーバーロード
- 参照型の戻り値で関数定義・参照戻し
- const宣言の引数を持つ関数
- 引数のない関数(void)・voidの戻り値
- 関数の定義
- using文・using namespace
- 名前空間・namespace
- 変数の記憶クラス
- グローバル変数とローカル変数
スポンサーリンク