1. ホーム
  2. c++

[解決済み】ポインタとリファレンス

2022-04-05 21:45:22

質問

関数に元の変数を与える場合、どのようにしたらよいでしょうか。

unsigned long x = 4;

void func1(unsigned long& val) {
     val = 5;            
}
func1(x);

または

void func2(unsigned long* val) {
     *val = 5;
}
func2(&x);

IOW:どちらかを選ぶ理由はあるのでしょうか?

どのように解決するのか?

私の経験則では

ポインタを使った演算を行いたい場合(例えば、ポインタのアドレスをインクリメントして配列を走査する場合)、あるいはNULLポインタを渡さなければならない場合などには、ポインタを使用します。

それ以外の場合はリファレンスを使用します。