アプリ版:「スタンプのみでお礼する」機能のリリースについて

参照型変数へのポインタに関してです。
たとえば

int _v[10];
int &v = &_v[0];
int *pv;
pv = &v;  // 参照型変数のアドレスをポインタに代入

こうすると、pv[n]と、_v[n]は同値になります。(VC++とG++では確認)
これ(この使い方)で同値なのは
・c++の言語仕様
・コンパイラの実装依存
のどちらでしょうか?
WEBを漁ると「参照型変数はエイリアス(別名)」とかかれているページがヒットするので、C++の言語仕様かなと思っています。

#もちろん配列に置き換えずに単純な参照型変数として使った場合の、値の同一性は言語仕様でしょうが。

A 回答 (4件)

ちなみに、C++であっても



int _v[10];
int &v = &_v[0];

といった書き方はできません。

int _v[10];
int &v = _v[0];

の間違いではないでしょうか?

この回答への補足

ご指摘ありがとうございます。
typoでした。
int &v = _v[0];
です。

JISかISOの標準規格を見ることができて、「単純なエイリアス機能の提供である」ということが分かればすっきりするのですが。

補足日時:2010/09/20 22:41
    • good
    • 0

C++の参照がやっているのは「記述レベルでのポインタの隠蔽」に過ぎないので、言語上の仕様と考えていいかと思います。

    • good
    • 0
この回答へのお礼

JIS文書の閲覧が出来た(JISサイトにあった)ので見てみましたが、明確な記述はありませんでした。

ありがとうございました。

お礼日時:2010/10/06 13:53

#1さんが書かれたことは大嘘です。



>int &v = &_v[0];

Cでは、こういう書き方はできません。
    • good
    • 0

C++をお使いの様ですが、提示されてるものは


Cの言語仕様になります。

この回答への補足

cには参照型変数は無かった(c++からの拡張仕様)だったと思いますが。

補足日時:2010/09/18 08:56
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!