只想問一個初學者的問題...C++指針,初學者問
在這裏,我做了一些代碼,對於理解指針的概念/基本:
int a=1;
int *b=&a;
int **c = &b;
int ***d = &c;
cout << &*(&*d) << endl;
可有人向我解釋,爲什麼&*(&*d)
返回地址「c」而不是「b」的地址? 我也試過這樣的代碼&*(&*(&*(&*(&*d))))
,但保留「C」的返回地址
感謝很多:)
只想問一個初學者的問題...C++指針,初學者問
在這裏,我做了一些代碼,對於理解指針的概念/基本:
int a=1;
int *b=&a;
int **c = &b;
int ***d = &c;
cout << &*(&*d) << endl;
可有人向我解釋,爲什麼&*(&*d)
返回地址「c」而不是「b」的地址? 我也試過這樣的代碼&*(&*(&*(&*(&*d))))
,但保留「C」的返回地址
感謝很多:)
因爲&*
相互抵消。 *
解除引用d
它給出了c
的值。然後&
給出地址c
,或者d
的值。
簡單規則:使用*
來訪問/提供值,使用&
來訪問/提供地址。
*
取消引用指針,並給出它指向的內容。 &基本上是addressof。
當在同一地點使用它們相互抵消,如果你要打印的c您需要*d
,對於B則需要**d
地址&*d
相當於d 以及在這些數據,您需要***d
。
如果x
是一個變量,那麼&*x
並不完全等於x
。前者是一個右值,而後者是左值。另一方面,*&x
總是與x
相同,因爲這兩個表達式都是左值。
謝謝當然...... lottt – BobAlmond 2010-03-30 06:46:28