2016-07-01 10 views
0

次のコードではどうなりますか?演算子[]のポインタ型の基本型

int main() 
{ 
    int i = 37; 
    int* pi = &i; 
    i[pi]; //works 
    i[0]; //error C2109: subscript requires array or pointer type 
} 

ポインタ引数を使用してintにインデックスを付けることが許可される理由は何ですか?

+0

'i [pi]はC++の' *(pi + i) ' – Alex

+1

と同じですが、配列のインデックス付けは明示的に(commutative)ポインタ算術を使って実装されています'*(pi + i)'の) ''と ''π ''が同じように動作するように残されていました。 2番目のケースでは、 'i [reinterpret_cast (0)]'が期待どおりに動作します。つまり、NULLポインタを逆参照するための未定義の動作です – oldrinb

答えて

0

i[pi]*(i + pi)と同じです。

関連する問題