有关指针的问题

作者在 2008-04-24 19:09:51 发布以下内容

谁能看明白 帮我解释下
#include "iostream.h"
void main()
{
int a=10;//这是创建一个int
int *m=&a;//这句话的意思是不是int* 一个m(申请一个指针m)然后这个指针变量的内容应该是a的地址,不应该是10?
int *p=(int*)m;//这是不是申请一个指针变量p,然后p的内容等于m的内容?也就是说p里边的内容存放的是m里的内容,也就是a的地址?
cout < <"p=" < <p < <" *p=" < <*p < <" &p=" < <&p < <" &(*p)=" < <&(*p) < <endl;
cout < <"m=" < <m < <" *m=" < <*m < <" &m=" < <&m < <" &(*m)=" < <&(*m) < <endl;
}
如果按我的理解 p=m等于一个地址
*p=*m也应该输出同一个一个地址(a的地址),因为*m=&a;而不是*m=a,如果这样才应该输出10,&a 和 a 是不同的呀
&p != &m
&(*p)=&(*m)//他们相等是因为*p=*m

输出的结果却是:

p=0x0012FF7C *p=10 &p=0x0012FF74 &(*p)=0x0012FF7C
m=0x0012FF7C *m=10 &m=0x0012FF78 &(*p)=0x0012FF7C

这是我理解的,希望大家帮我解释下我理解的误区,谢谢

我的提问 | 阅读 2301 次
文章评论,共2条
scuxt
2008-05-10 02:41
1
其实*m=*p=10,你肯定认为一个指针一定要带有*号,其实*还有另一种功能就是取值,就是取指针所指向的内容。当你初始申明和定义一个指针时一定要带上*,以表明这是个指针变量,以后再使用这个指针时,就不需要这个符号了,直接就是
这个指针变量名.
例如:
int a=10;
int *p;//申明p是指向int的指针
p=&amp;a;//这样指针就指向了p,p的值是a的地址
*p//*p=*(&amp;a)=10
从这也可以看出&amp;和*是逆运算
vic2008(作者)
2008-05-13 12:33
2
谢谢你!
游客请输入验证码
浏览78544次