関数プロトタイプ:
1. int test (int & i);
2. int test (int * i);
関数呼び出し:
1. test(n);
2. test(&n);
できるだけ多くの面で違いを説明できる人はいますか? どうもありがとう!
参照はできませんがNULL
、ポインターはできます。それが基本的に唯一の違いです。一般に、これは実装の詳細であるため、理論的には、参照渡しとポインター渡しは「内部」で異なる可能性がありますが、ほとんどの場合、同じ方法で実装されます。
主な違いは、(整形式のプログラムでは) 参照を null にすることはできないため、null をテストする必要がないことです。それ以外は、参照は通常、ポインターの観点から内部的に実装されるため、動作は似ています。
それ以外に、問題のスタイルの部分があります。この場合、さまざまなコンディング スタイルがどちらかを優先します。私はどちらかのスタイルを好む企業にいました.1つ目はC ++で慣用的であるため、2つ目は、引数が渡された場合に関数が引数を変更することを(少なくとも一部のプログラマーにとって)より明確にするように思われるためです.ポインター。私の個人的な感覚では、これは C プログラマーの慣習に近いものですが、それでも存在します。