只想问一个初学者的问题...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