C++ 引用
来源:互联网 发布:类似突袭的电影 知乎 编辑:程序博客网 时间:2024/06/06 01:47
c++提供了一个与指针密切相关的特殊数据类型————引用。饮用时一个变量的别名,定义引用类型变量,实质上是给一个已定义的变量起一个别名,系统不会为引用类型的变量分配内存空间,只是使引用类型变量与其相关联的变量使用同一个内存空间。
定义引用类型变量的一般格式为:
<数据类型> &<引用名> = <变量名>
或者
<数据类型>&<引用名> (<变量名>)
注意别把引用和取地址操作弄混了虽然都是用&操作符。其中变量必须是已经定义过的变量。例如:
int a=3;
int &ra=a; 或 int &ra(a);
这样,ra就是一个引用,它是变量a的别名。所有对这个引用ra的操作实质上就是对被引用对象a的操作。
还是例子来说明吧
void main()
{
int a;
int &ra=a;
a=5;
cout<<"a="<<a<<endl;
cout<<"ra="<<ra<<endl;
cout<<"a的地址为:"<<&a<<endl;
cout<<"ra的地址为:="<<&ra<<endl;
//赋值操作
cout<<"给引用重新赋值"<<endl;
ra=8;
cout<<"a="<<a<<endl;
cout<<"ra="<<ra<<endl;
cout<<"a的地址为:"<<&a<<endl;
cout<<"ra的地址为:="<<&ra<<endl;
}
来看看它们的输出结果
a=5
ra=5
a的地址为:0012FF60
ra的地址为:=0012FF60
给引用重新赋值
a=8
ra=8
a的地址为:0012FF60
ra的地址为:=0012FF60
请按任意键继续. . .
看出来了吧自始至终ra 和 a的的变化都是同步的,也就是说操作ra实际上就是操作a。可以看出引用和指针最大的区别就是:指针初始化赋值后还可以再赋值指向其它地址,而ra自从赋值以后它的地址就不会改变了。
当然还有一些需要注意的要点:
1. 定义饮用时必须将其初始化, 引用的数据类型必须与其引用的数据类型一样。
2. 当引用类型变量的初始化值是常数的,则必须将此引用的定义成const类型。
3. 不能引用数组,因为数组是某个数据类型元素的集合,数组名代表的是该元素结合的首地址,它自己不是真正的数据类型。
4. 引用本身不是数据类型,所以没有引用的引用,也没有引用的指针。看例子:
void main()
{
int a=5;
int &ra=a;
int &rra=ra; //正确,是a的另外一个引用。
int *p=&ra; //正确,是指向a的地址的指针。
//下面注意
int & *p1=&ra; //错误,企图建立指向引用的指针
cout<<"a="<<a<<endl;
cout<<"ra="<<ra<<endl;
cout<<"rra="<<rra<<endl;
cout<<"*p="<<*p<<endl;
}
- 引用(c++)
- C++----引用
- c++-引用
- C ++ 引用
- 【c++】引用
- 【c++】引用
- C++:引用
- C++:引用
- C/C++:C++引用
- 【c/c++】const引用
- 【C/C++】c++弱引用 强引用
- 枚举 c#(引用)
- 数组引用(C++)
- C++_引用
- c语言中的引用
- (Linux,c++)引用
- 引用(C++)
- objective-c 引用计数
- gcc和g++的区别
- JavaScript 获取客户端计算机硬件及系统信息
- Ext for eclipse 插件安装方法
- xml实战:一 把表转化为XML
- chm格式文件打开出错:无法显示网页
- C++ 引用
- 同一列中加多个链接
- 开博第一篇
- 浅谈wince驱动调试方法
- 什么是软件工程?
- 2009年开博第一篇
- IEs 4 Linux
- [摘录] gcc 中std::list 的size()成员函数
- 页面居中不要使用 text-align:center