C++引用详解(一)

来源:互联网 发布:生死狙击狸猫js直播间 编辑:程序博客网 时间:2024/06/07 16:45

int a = 0;              // int型变量a
int *pI = &a;           // 指向int型的指针变量pI
int& rI = a;            // int型的引用rI,引用的变量为a
int& rT = *(int*)0x01;  // int型的引用rT,引用的内存地址为0x01

 

到了编译器,产生四个符号,a,pI,rI,rT.
rT标示了一块内存,这块内存地址为0x01
a和rI完全一样,他们标示了一块int的内存比如0x0012ff70,其内容为00000000
pI首先为一个变量,它有自身的内存地址,即pI标示了一块内存,比如0x0012ff6c.其内容极为a所标示的内存地址0x0012ff70
由于程序语言的设计,引用rI只有在声明时才有机会初始化(也必须初始化),即
告知编译器该引用引用的是哪一块内存(或变量).因为一旦声明结束,之后看到该引用时,等同于它所引用的那块内存(或变量)
而指针,由于其本身为一个变量,一般情况下都是可以改变这个变量的值的.所以,理论上可以使用一个指针,通过改变指针变量本身的值,来(简介)访问,或者修改任何一块内存,所以指针功能强大,同样也相当危险

一般,引用总是引用一个有意义的变量.像int& rI = a;使用,这样的话,引用一般是比较安全的.所以很多书上都说引用无需判断其有效性.
但是同样int& rT = *(int*)0x01;的使用一般也是没有编译问题的.所以,如果引用在使用不当的时候,跟指针的危险性几乎是一样的.

问过很多人,指针和引用是一样的.我相信他们都是高手.至少,对于C++有着相当的认识.


转自:C++指针与引用本质区别

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 身上起大片扁疙瘩很痒怎么办 我急用钱借钱又借不到怎么办 小孩蛀牙牙疼怎么办教你立刻止疼 牙齿里面长了个小牙齿怎么办 2岁宝宝又吐又拉怎么办 u盘坏了怎么办没反应了 怀孕了不知道孩子是谁的怎么办 怀孕八个月耻骨疼的厉害怎么办 没感情了这段婚姻该怎么办 1岁半宝宝o型腿怎么办 4s店没按时交车怎么办 几天几夜睡不着觉没有睡意怎么办 辣的吃多了胃疼怎么办 喉咙痛怎么办有最好即简单好得快 减肥过后皮肤留下的肥胖纹怎么办 用了完美玛丽艳脸上长痘痘怎么办 腰疼怎么办8方法解决腰疼 红米3x开不了机怎么办 苹果手机忘记了锁屏密码怎么办 小米5的4g网速慢怎么办 红米4a卡机了怎么办 信而富逾期3个月怎么办 苹果6锁屏密码忘了怎么办 孕8个月咳嗽有痰怎么办 微信红包输了6万怎么办 红米3s开不了机怎么办 核载5人载了6人怎么办 我欠支付宝2万6怎么办 我47岁这个月经不来怎么办 两个月不来月经了也没怀孕怎么办 婴儿不吃奶粉母乳又不够吃怎么办 怀孕39周了还没反应怎么办 脸过敏了又红又痒怎么办 刚开的淘宝店没生意怎么办 我22岁长得显老怎么办 卡的钱被qq转走怎么办 招行u盾密码忘了怎么办 孩子上五年级了成绩非常差怎么办 红米3s开不开机怎么办 皮肤被虫子咬了红肿痒怎么办 微信被骗了1万多怎么办