| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1191 人关注过本帖
标题:求助 *&q和q的含义 谢谢
只看楼主 加入收藏
datoushan
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-4-3
结帖率:0
收藏
 问题点数:0 回复次数:7 
求助 *&q和q的含义 谢谢
int *&q=p; 此时*&q和q 的含义,输出的为什么是同一个“地址”
搜索更多相关主题的帖子: 含义 
2010-04-14 20:50
ljt
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:191
专家分:431
注 册:2009-4-6
收藏
得分:0 
回复 楼主 datoushan
#include <fstream.h>
#include <assert.h>
main(int argc,char* argv[])
{
    int a=7;
    int *p=&a;
   int *&q=p;
   cout<<p<<endl;
 
   cout<<q<<endl;
   cout<<*q<<endl;
   cout<<&q<<endl;
   cout<<*&q<<endl;
   


}
/*
结果:
0x0012FF7C
0x0012FF7C
7
0x0012FF78
0x0012FF7C
Press any key to continue
从结果看到p和q都是指向a,也就是p中的内存保存了a的地址,
指针q本省也要有内存空间,&q即指针q的地址;*&q呢,就是
取就是去q的地址保存的内容,q地址保存的内容就是a的地址,
所以*&q=q。
2010-04-14 22:12
atemouse
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2009-11-14
收藏
得分:0 
int p;
int *q;
q=&p;
即我们可以这样看*&q=*(&q)=*p=q,所以*&q=q
2010-04-14 23:17
datoushan
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-4-3
收藏
得分:0 
回复 2楼 ljt
非常感谢

当我放弃的那一刻,我已不在人世!
2010-04-15 10:00
datoushan
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-4-3
收藏
得分:0 
回复 2楼 ljt
不胜感激

当我放弃的那一刻,我已不在人世!
2010-04-15 10:01
datoushan
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-4-3
收藏
得分:0 
回复 3楼 atemouse
谢哈

当我放弃的那一刻,我已不在人世!
2010-04-15 10:05
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
首先小小打击你们一下
你们都理解错误了
*&q是指针的引用
也就是说 q是指针*p的别名
接下来 小改一下你们的程序
using namespace std;
int main(int argc, char* argv[])
{
        int a=7;
        int *p=&a;
        int *&q=p;
        cout<<"&a="<<&a<<endl;
        cout<<"p="<<p<<endl;
        cout<<"&p="<<&p<<endl;
        cout<<"q="<<q<<endl;
        cout<<"*q="<<*q<<endl;
        cout<<"&q="<<&q<<endl;
        cout<<"*&q"<<*&q<<endl;

}
图片附件: 游客没有浏览图片的权限,请 登录注册

这是我们可以看到q 居然没有自己的地址
为什么呢
因为q是一个指针引用 它只是p的一个别名而已  他相当于一个常量
他的内容就是p的地址
所以我们可以看到 a的地址 p的指向地址 *&q别名地址 都是a的地址
而&p 以及&q 注意这里不是取q的地址 而是取的p的地址 因为q是p的引用
取引用的地址 当然就是取引用对象的地址 所以又是一样的
2010-04-15 12:55
缝小肛
Rank: 2
等 级:论坛游民
帖 子:11
专家分:25
注 册:2010-4-15
收藏
得分:0 
楼7哥们也说错了
我接着7楼的继续 int *&q=p; 这句是1楼的问题,我们可以先看下结合性。

我们可以看成 int *  &q=p;也就是说 &q是p的一个引用(别名)
他们共同占同一地址。就相当于 我大名 缝小肛,我在老家 长辈叫我 小肛(别名)。不管怎么叫都是我本人。OK ?
然后 &q 才结合 * 号; 说明P的引用 是一个指针, 他是一个 int 型的 指针。

我也刚接触C++ 不对的地方 还请高手指出来
2010-04-15 16:31
快速回复:求助 *&q和q的含义 谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017369 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved