重複の可能性:
参照渡しと値渡しの違いは何ですか?
タイトルが他の多くの回答済みの質問を表している可能性があることは知っていますが、私の非常に具体的な質問は他のスレッドでは回答されていないと思います (検索しましたが、重複していれば申し訳ありません)。
ビジネスへ: 次の署名を検討してください:
A:
void MyFunction(long int x);
B:
void MyFunction(long int & x);
そして次の使用法:
void main()
{
short int y = 0;
MyFunction(y);
...
}
私の質問は、MyFunction のメモリ スタック フレーム内のパラメータのメモリ消費に関するものです。
A の場合、パラメータは値で渡されますが、sizeof(short int) バイトを消費するということですか?
B の場合、コンパイラがポインタを使用してパラメータを実装すると仮定すると、パラメータは参照によって渡されますが、それは sizeof( pointer_type ) バイトを消費することを意味しますか?これはおそらく short int よりも大きいですか? (参照を使用する場合、プラットフォームによってはとにかく64ビットを消費する可能性があると言われました)
どちらの場合も効果があるかどうかを知りたいので、関数は long int 型を受け取ることに注意してください。
もう 1 つの小さな質問 - ポインターを使用して参照渡しパラメーターをコンパイラーが実装しない例を誰でも投稿できますか?
ありがとう、アサフ。