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++指针与引用本质区别
- C++引用详解(一)
- 重拾C++(一):引用高级
- [C++]指针和引用(一)
- C引用详解
- C++“引用”详解
- c++-引用一维数组
- c语言指针初探 一 指针与引用(二)
- Objective-C内存管理之引用计数(一)
- C语言指针详解(一)
- c语言指针详解(一)
- c语言ASCII码表详解(一)
- C语言指针详解(一)
- c/c++指针详解(一)
- C#ListView详解(一)
- 引用(一)
- 引用类型(一)
- 关于引用(一)
- 【引用】va_start(详解)
- Drawable、Bitmap、byte[]之间的转换 Bitmap转换成InputStream。
- poj3694 Network 双连通分量、并查集
- Drools Flow(jbpm5学习资料)
- android异步回调加载网络图片
- 设计模式之一:单例模式
- C++引用详解(一)
- ServiceManager 学习
- 写在上海的这些日子
- 编译适用于micro2440(mini2440)+华为EC189的3G PPP拨号的zImage
- Android异步加载图像小结
- mysql乱码,开发中遇到的问题
- Linux/shell命令的实际应用——netstat查看Port占用
- 使用SQLite存储以及读取Drawable对象
- 【传输层】UDP知识详解