我写了一个小码,以便快速解释我的问题数组的第一个元素:C++,操纵指针
#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]
究竟代表什么?
b [9]指向a [9]。 b和b [0]一样指向a [0]。当您将一个下标放在指针上时,下标将被添加到指针中。当你加载一个指针时,这就是你使用address-of操作符的时候。 (只是为了进一步混淆事物,int * 0 [b]也指向一个[0]。) – 2012-02-14 19:42:30
@PeteWilson:b [9]并不真正指向任何东西,因为指针指向的是事物。 – 2012-02-14 19:51:27