1. ホーム
  2. c++

C++:関数/メソッド宣言におけるアンパサンド「&」とアスタリスク「*」の違い?

2023-10-06 12:55:30

質問

何か微妙な違いがあるのでしょうか。

void a1(float &b) {
    b=1;
};
a1(b);

void a1(float *b) {
    (*b)=1;
};
a1(&b);

?

どちらも同じことをする(あるいはmain()からそう見える)のですが、最初のものの方が明らかに短いです。しかし、私が見るコードのほとんどは2番目の記法を使用しています。何か違いがあるのでしょうか?多分、floatの代わりに何かオブジェクトの場合?

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

どちらも同じですが、一方は参照を使用し、一方はポインタを使用しています。

すべての違いの包括的なリストについては、こちらの私の回答を参照してください。 .