作者在 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
这是我理解的,希望大家帮我解释下我理解的误区,谢谢