我寫了一個小碼,以便快速解釋我的問題數組的第一個元素: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