Я написал небольшой код, чтобы быстро объяснить мой вопрос:
#include<iostream>
using namespace std;
int main()
{ int a [10] = { 200, 60, 100, 70, 0, 0, 105, 400, 450, 30};
int *b = &a[0];
int *c = &a[9];
int *d = b+9;
cout<<&b[9]<<endl
<<c<<endl
<<d<<endl;
return 0;
}
Я не понимаю, почему мне пришлось использовать оператор адреса для получения того же результата. В частности, не должны ли b[9]
(и не &b[9]
) быть равными &a[9]
и b+9
? Я в замешательстве, поскольку b уже определено как указатель, b [9] также должно быть одним, и для меня имеет смысл указывать на тот же адрес, что и b+9
.
А в моем примере, что на самом деле представляет собой b[9]