-1

関数プロトタイプ:

1. int test (int & i);
2. int test (int * i);

関数呼び出し:

1. test(n);
2. test(&n);

できるだけ多くの面で違いを説明できる人はいますか? どうもありがとう!

4

2 に答える 2

5

参照はできませんがNULL、ポインターはできます。それが基本的に唯一の違いです。一般に、これは実装の詳細であるため、理論的には、参照渡しとポインター渡しは「内部」で異なる可能性がありますが、ほとんどの場合、同じ方法で実装されます。

于 2013-07-22T04:34:16.640 に答える
4

主な違いは、(整形式のプログラムでは) 参照を null にすることはできないため、null をテストする必要がないことです。それ以外は、参照は通常、ポインターの観点から内部的に実装されるため、動作は似ています。

それ以外に、問題のスタイルの部分があります。この場合、さまざまなコンディング スタイルがどちらかを優先します。私はどちらかのスタイルを好む企業にいました.1つ目はC ++で慣用的であるため、2つ目は、引数が渡された場合に関数が引数を変更することを(少なくとも一部のプログラマーにとって)より明確にするように思われるためです.ポインター。私の個人的な感覚では、これは C プログラマーの慣習に近いものですが、それでも存在します。

于 2013-07-22T04:34:55.640 に答える