0
次のコードではどうなりますか?演算子[]のポインタ型の基本型
int main()
{
int i = 37;
int* pi = &i;
i[pi]; //works
i[0]; //error C2109: subscript requires array or pointer type
}
ポインタ引数を使用してintにインデックスを付けることが許可される理由は何ですか?
'i [pi]はC++の' *(pi + i) ' – Alex
と同じですが、配列のインデックス付けは明示的に(commutative)ポインタ算術を使って実装されています'*(pi + i)'の) ''と ''π ''が同じように動作するように残されていました。 2番目のケースでは、 'i [reinterpret_cast(0)]'が期待どおりに動作します。つまり、NULLポインタを逆参照するための未定義の動作です –
oldrinb