生手刚学C++,路遇指针,引用,&取值拦路虎,求武松帮忙来打虎

新手刚学C++,路遇指针,引用,&取值拦路虎,求武松帮忙来打虎。
本帖最后由 leezjl 于 2013-09-07 12:29:19 编辑
武松大大们请看:
int n = 100;
int& num = n;
int* num2 = #
int& num3 = *num2;

cout<<"&num: "<<&num<<endl;
cout<<"num2: "<<num2<<endl;
cout<<"&num2: "<<&num2<<endl;
cout<<"&(*num2): "<<&(*num2)<<endl;
cout<<"*(&num2): "<<*(&num2)<<endl;
cout<<"&num3: "<<&num3<<endl;


上面这段代码在我机器上显示为:
&num: 0026FD00
num2: 0026FD00
&num2: 0026FCE8
&(*num2): 0026FD00
*(&num2): 0026FD00
&num3: 0026FD00

下面我来发表疑问:
&num: 0026FD00        (取num引用的地址,地址值为0026FD00)
num2: 0026FD00        (指针num2指向num, 所以地址值也为0026FD00)
&num2: 0026FCE8       (取指针num2的地址,这个值为毛不是0026FD00?求解)
&(*num2): 0026FD00    (*num2就是num的内容, &(*num2), 就是取num的地址,所以地址值也是0026FD00,是不是该这样解释?)
*(&num2): 0026FD00    (又是&num2,这里糊涂了,为什么打印结果是0026FD00);
&num3: 0026FD00       (num3本身是个引用,是指针num2的一个别名,num2又指向num,所以还是一个地址,这样子理解对吗?)

景阳冈已备好酒(60分,虽然不多,聊表心意),等大大们来喝。
c++ c 指针 引用 &取值符

------解决方案--------------------
把普通变量看作一个房间,里面放一样东西(比如整形数字),变量的地址是门牌号码。
指针(指针变量)本身也是一个房间,里面放的是地址(另外一个房间的门牌号码)
&变量,就是取得变量的门牌号码。
*指针变量,就是去这个变量房间内放的门牌号码的那个房间

理解上述的关系,那么你那些问题就简单了
&num2: 0026FCE8       (取指针num2的地址,这个值为毛不是0026FD00?求解)
&num2是指针变量本身的地址,当然和指针变量内部存放的地址不一样的。
以下略。
------解决方案--------------------
引用:
把普通变量看作一个房间,里面放一样东西(比如整形数字),变量的地址是门牌号码。
指针(指针变量)本身也是一个房间,里面放的是地址(另外一个房间的门牌号码)
&变量,就是取得变量的门牌号码。