关于我对指针的理解请高手指点我下

int*qq,b=5;
qq=&b//就是获取了b内存中的地址,那么获取了内存地址有什么用呢??
*(&b)//又是什么意思???
*qq打印出来后怎么又会变成5呢??不是打印出内在地址吗?

你可以这样理解,定义qq的时候,它的类型是int *,而不是int,也就是说,它是一个指向int的指针。

获取内存地址,就可以对这个地址里的数据进行操作了。打个比方,我知道了你的宿舍号,就可以找你了。

&是取地址运算符,*是取地址中的值,至于用什么方式取,去几个字节,则取决于指针的类型。如上,qq是指向int的指针,所以*qq取出来就是一个整数。既然qq表示b的地址,那么*qq就是这个地址的值了,b=5,所以*qq就是5。

至于*(&b),一样的道理,&b是b的地址,再加上*,取这个地址的值,当然还是b的值了。

关于指针,一定要好好理解。可以用一些比方来帮助你理解,比如上面的宿舍号。宿舍号虽然是509,但是宿舍里面的人可不是509哦。

讲一个故事:小和尚问老和尚,“佛经里面的道理是真理,那么佛经是真理吗?”老和尚用手指着月亮说,“我的手指向月亮,那我的手是月亮吗?”

呵呵,希望可以帮助你理解。

以上。
疯狂打字的老狼
温馨提示:答案为网友推荐,仅供参考
第1个回答  2006-09-28
qq=&b是将指针qq指向变量b的内存地址,这也是指针赋值的一种方法.
指针其实就是指向内存地址的.

*(&b)是一个指针,不过用途倒不大,&b是地址*是将此地址做为指针
*qq进行printf后输出的是b的值,而不是地址;
若对qq输出,便是输出地址