引数を reference で受け取る

関数で渡された引数を reference(参照)で受け取ります。

前田稔の超初心者のプログラム入門

プログラムの説明

  1. 次の func() 関数の宣言を見て下さい。
    & は変数をポインタで渡すときに良く使用されますが、今回は受け取るパラメータ側に付けられています。
    これがパラメータを reference で受け取る書き方です。
    & を付けた変数のことを「参照変数またはエイリアス」等と呼びます。
    変数のアドレスを表す & と同じ記号で紛らわしいですが、参照で & を付けるのは、変数を宣言するときだけです。
    参照変数に値を代入するようなときには、何も付けません。
    void func(int& param);
  2. func() 関数のソースコーです。
    受け取った param を二倍するだけです。
        void func(int& param)
        {
            param *= 2;
        }
        
  3. main() 関数を見てみましょう。
    func() 関数を呼び出した後で num の値を印字しています。
    印字される値は幾らでしょう?。
        int main()
        {
            int num = 123;
            func( num );
            std::cout << num << std::endl;
    
            return 0;
        }
        
    num の値が二倍されたでしょうか。
    これが int& param の効果です。 <(`^´)>
  4. 従来ならこのようなプログラムではポインタを渡すのが常識でした。
    func( &num ); //で渡して

    func(int *param) //で受けます。
    reference を使うと次のようになります。
    func( num ); //普通に渡して

    func(int& param) //で受けます。
  5. reference で受け取る場合は、呼び出し側は通常と変わらないので特に意識する必要はありません。
    また受け取り側ではポインタのように、間接参照「*param」やアロー演算子「param->」を使う必要が無くなります。
    慣れればポインタより使いやすいのでは無いでしょうか?。 \(^o^)/

【演習】

同じプログラムをポインタを使ってプログラムして、reference の意味を理解して下さい。

超初心者のプログラム入門(C/C++)