int main()
{
int arr[5] = { 1, 2, 3, 5, 7 };
int *ptr = (&arr + 1);
printf("%d", *(ptr - 1));
}
arr
アレイ(a[0]
即ち、アドレス)のベースアドレスが含まれているので、&arr + 1*sizeof(int)
はa[4]
とptr - 1
のアドレスであろうa[3]
のアドレスされるように出力が5
なければなりません出力は7
です。名ベースアドレスを指していない
あなたは何を期待したのですか? –
'&arr'は5要素配列のアドレスであり、' int * 'ではありません。また、 'ptr'とは何ですか? – Groo
私は残念ですが、あなたはポインタ 'p'を持っていて、宣言されていない' ptr'の値を表示します。 – Rafalon