欢迎来到天天文库
浏览记录
ID:49480886
大小:151.00 KB
页数:16页
时间:2020-02-25
《引用与内存管理 c++.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第十七讲:引用与内存管理课程内容安排引用引用的操作动态内存分配const引用指针与引用的区别综合练习思考和习题引用引用引入了对象的一个同义词,引用只是绑定的对象的另一名字,作用在引用上的所有操作事实上都是作用在该引用绑定的对象上。简单来说,引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。如果对引用进行输出、赋值等操作,其执行如图17-1所示。定义命名空间C++中,有两种形式的命名空间——有名的命名空间和无名的命名空间。标准C++中,命名空间的定义格式为:有名的命名空间:namesp
2、ace命名空间名{声明序列}无名的命名空间:namespace{声明序列}声明引用引用其实是变量的另一个名字。因此,与变量同样的,在使用引用前也需要对其进行声明,引用的声明语句如下:类型标识符&引用名=目标变量名;例如,下列语句声明了一个对整型变量a的引用ra。inta;int&ra=a;//定义引用ra,它是变量a的引用,即别名引用的操作引用只是某个变量或目标的同义词,引用的两个主要用途:作为函数参数从函数中返回值。引用作为函数参数下面定义了函数swap(),其定义的形式参数p1和p2就是引用,而在mai
3、n()函数中调用swap()函数。代码清单1#include2voidswap(int&p1,int&p2)//此处函数的形参p1,p2都是引用3{4intp;//定义整型变量p5p=p1;//交换两个变量的值6p1=p2;7p2=p;8}9voidmain()10{11inta,b;12cout<<"Pleaseinput2number:"<>a>>b;//输入a,b两变量的值14cout<<"Beforeswap:"<4、5、名前加“&”符号。用引用返回一个函数值的最大好处是在内存中不产生被返回值的副本。动态内存分配态内存分配是指在程序运行期间根据实际需要随时申请内存,并在不需要时释放,这样可以节省内存空间,提高程序运行效率。C++中,提供了两种运算符进行动态内存管理:new和delete运算符。将new运算符与delete运算符一起使用,就可以直接进行动态内存的申请和释放。申请动态内存C++中,new运算符用于申请所需的内存单元,返回指定类型的一个指针,在有些参考资料中也称为创建内存单元。一般来说,new运算符的语法格式为:指6、针=new数据类型;其中,指针应预先声明,指针指向的数据类型与new后的数据类型相同。若申请成功,则返回分配单元的首地址给指针;否则(比如没有足够的内存空间),则返回0(一个空指针)。例如,下列语句申请一个整型数据空间:int*p;p=newint;释放空间与new运算符相反的,delete运算符是释放new申请到的内存。也即当程序中不再需要使用运算符new创建的某个内存单元时,就必须用运算符delete来删除它,其语法格式为:delete指针;//释放非数组内存单元delete[常量]指针;//释放数组内7、存单元其中,指针是指向需要释放的内存单元的指针的名字。并且delete只是删除动态内存单元,并不会将指针本身删除。const引用const引用表示指向const对象的引用,而非const引用表示指向非const对象的引用。例如,下面语句定义了常量ival和const引用:constintival=1024;//定义const常量ivalconstint&ref1=ival;//引用和对象都是const如果定义了一个非const引用,将const对象赋给该引用时,这是非法的,因为对引用的修改将改变const对8、象的值,而const对象是不能改变值的。指针与引用的区别指针其实就是一个变量,和其他类型的变量是一个样子的,其是一个占用四字节的变量(32位机上),它与其他变量的不同之处就在于它的变量值是一个内存地址,指向内存的另外一个地方。而引用则是变量的一个别名。注意:一个指针变量可以指向NULL,表示它不指向任何变量地址,但是引用必须在声明的时候就得和一个已经存在的变量相绑定,而且这种绑定不可改变。综合练习在C++程序设计
4、5、名前加“&”符号。用引用返回一个函数值的最大好处是在内存中不产生被返回值的副本。动态内存分配态内存分配是指在程序运行期间根据实际需要随时申请内存,并在不需要时释放,这样可以节省内存空间,提高程序运行效率。C++中,提供了两种运算符进行动态内存管理:new和delete运算符。将new运算符与delete运算符一起使用,就可以直接进行动态内存的申请和释放。申请动态内存C++中,new运算符用于申请所需的内存单元,返回指定类型的一个指针,在有些参考资料中也称为创建内存单元。一般来说,new运算符的语法格式为:指6、针=new数据类型;其中,指针应预先声明,指针指向的数据类型与new后的数据类型相同。若申请成功,则返回分配单元的首地址给指针;否则(比如没有足够的内存空间),则返回0(一个空指针)。例如,下列语句申请一个整型数据空间:int*p;p=newint;释放空间与new运算符相反的,delete运算符是释放new申请到的内存。也即当程序中不再需要使用运算符new创建的某个内存单元时,就必须用运算符delete来删除它,其语法格式为:delete指针;//释放非数组内存单元delete[常量]指针;//释放数组内7、存单元其中,指针是指向需要释放的内存单元的指针的名字。并且delete只是删除动态内存单元,并不会将指针本身删除。const引用const引用表示指向const对象的引用,而非const引用表示指向非const对象的引用。例如,下面语句定义了常量ival和const引用:constintival=1024;//定义const常量ivalconstint&ref1=ival;//引用和对象都是const如果定义了一个非const引用,将const对象赋给该引用时,这是非法的,因为对引用的修改将改变const对8、象的值,而const对象是不能改变值的。指针与引用的区别指针其实就是一个变量,和其他类型的变量是一个样子的,其是一个占用四字节的变量(32位机上),它与其他变量的不同之处就在于它的变量值是一个内存地址,指向内存的另外一个地方。而引用则是变量的一个别名。注意:一个指针变量可以指向NULL,表示它不指向任何变量地址,但是引用必须在声明的时候就得和一个已经存在的变量相绑定,而且这种绑定不可改变。综合练习在C++程序设计
5、名前加“&”符号。用引用返回一个函数值的最大好处是在内存中不产生被返回值的副本。动态内存分配态内存分配是指在程序运行期间根据实际需要随时申请内存,并在不需要时释放,这样可以节省内存空间,提高程序运行效率。C++中,提供了两种运算符进行动态内存管理:new和delete运算符。将new运算符与delete运算符一起使用,就可以直接进行动态内存的申请和释放。申请动态内存C++中,new运算符用于申请所需的内存单元,返回指定类型的一个指针,在有些参考资料中也称为创建内存单元。一般来说,new运算符的语法格式为:指
6、针=new数据类型;其中,指针应预先声明,指针指向的数据类型与new后的数据类型相同。若申请成功,则返回分配单元的首地址给指针;否则(比如没有足够的内存空间),则返回0(一个空指针)。例如,下列语句申请一个整型数据空间:int*p;p=newint;释放空间与new运算符相反的,delete运算符是释放new申请到的内存。也即当程序中不再需要使用运算符new创建的某个内存单元时,就必须用运算符delete来删除它,其语法格式为:delete指针;//释放非数组内存单元delete[常量]指针;//释放数组内
7、存单元其中,指针是指向需要释放的内存单元的指针的名字。并且delete只是删除动态内存单元,并不会将指针本身删除。const引用const引用表示指向const对象的引用,而非const引用表示指向非const对象的引用。例如,下面语句定义了常量ival和const引用:constintival=1024;//定义const常量ivalconstint&ref1=ival;//引用和对象都是const如果定义了一个非const引用,将const对象赋给该引用时,这是非法的,因为对引用的修改将改变const对
8、象的值,而const对象是不能改变值的。指针与引用的区别指针其实就是一个变量,和其他类型的变量是一个样子的,其是一个占用四字节的变量(32位机上),它与其他变量的不同之处就在于它的变量值是一个内存地址,指向内存的另外一个地方。而引用则是变量的一个别名。注意:一个指针变量可以指向NULL,表示它不指向任何变量地址,但是引用必须在声明的时候就得和一个已经存在的变量相绑定,而且这种绑定不可改变。综合练习在C++程序设计
此文档下载收益归作者所有