- # C言語/C++入門 > 関数と変数のスコープ
参照型の戻り値で関数定義・参照戻し
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
参照戻し
スポンサーリンク
参照型の宣言は、関数定義値の戻り値にも使用できます。
以下は、配列要素の値から、最大の値を取り出すプログラム。
#include <iostream> int& biggest(int array[], int num) { int index; int biggest; // まず、最初の要素が最大と前提 biggest = 0; for (index = 0; index < num; index++) { if (array[biggest] < array[index]) biggest = index; } return (array[biggest]); } int main() { int item_array[5] = {2, 5, 3000, 7, 9}; std::cout << "Biggest: " << biggest(item_array, 5) << "\n"; biggest(item_array, 5) = 10; std::cout << "Biggest: " << biggest(item_array, 5) << "\n"; }
int& biggest(int array[], int num)と参照の戻り値で関数定義しているので、関数呼び出しを代入文の左辺で利用できます。(lvalues:代入文の左側で使用できる式)
実行結果。
Biggest: 3000 Biggest: 10
もし、参照型の戻り値でなく、int biggest(int array[], int num) と関数定義しますと、戻り値が参照ではなくなりますので、関数呼び出しを代入文の左辺では使えなくなります。
biggest(item_array, 5) = 10;で、エラーが起こりコンパイルできません。
ダングリング参照・ダングリングリファレンス
参照戻しを用いる場合には、存在しない変数を参照してしまう、ダングリング参照に注意する必要があります。
難しいので、もう少し後から勉強します。
スポンサーリンク
>> 次の記事 : 関数のオーバーロード
<< 前の記事 : 参照型の引数で関数定義
- - 関連記事 -
- 再帰関数
- 関数の引数型/値呼び出し(値渡し)・参照呼出し(参照渡し)・配列
- インライン関数・inline
- デフォルト引数・定義された引数を使用しない関数
- 関数のオーバーロード
- 参照型の引数で関数定義
- const宣言の引数を持つ関数
- 引数のない関数(void)・voidの戻り値
- 関数の定義
- using文・using namespace
- 名前空間・namespace
- 変数の記憶クラス
- グローバル変数とローカル変数
スポンサーリンク