首页 新闻 会员 周边 捐助

c++中的*,&怎么用的啊?

0
悬赏园豆:5 [已解决问题] 解决于 2015-03-26 21:21
 1 int main(int argc, char* argv[])
 2 {
 3     int c=1;
 4     int *f=&c;
 5     cout << &c << endl;
 6     cout << f << endl;
 7     cout << *f << endl;
 8     cout << &f << endl;
 9     cout << *&f << endl;
10     cout << &*f << endl;
11 
12     return 0;
13 }

运行结果:

这里的 f 和 &f 有啥区别,不是都代表指针的地址吗,为啥他俩的值还不一样?
*&f 和 &*f 又是啥?

薛晓东的主页 薛晓东 | 初学一级 | 园豆:194
提问于:2015-03-26 20:55
< >
分享
最佳答案
1

一元"&"符号为取指针运算符,即指向该变量的指针的值。

一元"*"符号为取值运算符,即该指针变量所指向的变量的值。

以上是总论。接下来对你的例程中的每一条进行解读。

c是一个int型变量,在初始化时,编译器会给它分配一个地址,这个地址本身被存储在 指向int型的指针 f 中。

因此第一个&c 和第二个f,他们的值是一样的,都是c在内存中的地址,也就是指向c的指针的值。

第三个*f是取出指针变量f所指向的变量的值,也就是c。

第四个&f,是指针变量的指针,也就是f在内存中的地址(f是一个变量,也有相应的内存地址)

第五个和第六个都是互反的运算,也就是说(*&)和(&*)运算相互抵消,留下的就是指针变量f本身的值。

不知道说明白了没有

收获园豆:5
飞鸟_Asuka | 菜鸟二级 |园豆:393 | 2015-03-26 21:09

 哦,意思 f 才是c的地址,&f 又是 f 的地址,所以不是c的地址,真晕啊,不过好像懂了,谢谢!

薛晓东 | 园豆:194 (初学一级) | 2015-03-26 21:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册