- # 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
- 変数の記憶クラス
- グローバル変数とローカル変数
スポンサーリンク