私は違いのb / wポインタ変数と参照変数がC ++でここにあるものを読んでいました。私はそれからポイントを得ましたが、参照は同じメモリアドレスを共有しますが、スタック上のスペースも占有します。. 同じアドレス空間を共有するということはどういう意味ですか.参照がc ++でどのように実装されているかを明確にしてください.
質問する
308 次
2 に答える
9
それはやや紛らわしい言葉遣いの答えです。しかし、それはかなり単純なことを意味します。スタックスペースの占有に関する部分は、参照が実際にメモリを占有することを意味します。つまり、ポインターと同じ量のメモリを占有します (そして、[私が認識している] すべての C++ 実装では、実際のポインターを使用して実装されています)。
「同じメモリアドレスを共有する」という部分は、参照が独立してアドレス指定できる値ではないことを意味します。何かへのポインターがある場合、そのポインターのアドレスを取得すると、何かへのポインターへのポインターになる可能性があります。しかし、何かへの参照がある場合、その参照のアドレスを取得することはできません。そうしようとすると、実際に参照されているもののアドレスが取得されます。それが彼が「同じメモリアドレスを共有する」という意味です。
于 2012-08-22T08:55:32.000 に答える
2
大雑把に言えば、参照変数はポインターのようには見えないポインター変数のようなものです (つまり、コンテンツにアクセスするためのポインター構文はありません)。スタックやヒープとは関係ありません。
int i = 5; // integer on the Stack
int * j = new int (5); // integer on the Heap (accessible through pointer, naturally)
int & iref = i; // reference to integer on the Stack
int & jref = *j; // reference to integer on the Heap
int * ipointer = & i; // pointer to integer on the Stack
int * jpointer = j; // pointer to integer on the Heap
于 2012-08-22T08:55:50.643 に答える