坚持学习100天:引用与内存管理

坚持学习100天:引用与内存管理,第1张

前言

Hello,我是修齊。
学习C++的第一百零一十七天,用心学习。
在这里记录一些学习的东西和学习的心情,内容主要是一些自己学习整理的小笔记。

一、reference(引用)

1.引用用做对象的另一名字,实际中主要用做函数的形式参数。
2.简单讲,引用主要是一种复合类型(compound type),即用其他类型定义的类型。
3.通过在变量名前添加&符号来定义
4.在引用情况下,每一种引用类型都关联到某一其他类型。
5.不能定义引用类型的引用,但可以定义任何其他类型的引用。
6.引用引入了对象的一个同义词,引用只是绑定的对象的另一名字。
7.作用在引用上的所有 *** 作事实上都是作用在改引用绑定的对象上。
8.引用就是某一变量(目标)的一个别名,对引用的 *** 作与对变量的直接 *** 作完全一样。

int a;
int &ra=a;//定义引用ra,它是变量a的引用,即别名

9.引用不是值,不占内存空间,声明引用时,目标的存储状态不会改变,所以,引用只有声明,没有定义。
10.不能建立数组的引用,数组是一个由若干个元素所组成的集合,无法将建立一个数组的别名。

二、引用的使用
#include
void main()
{
   int a;//声明变量
   int &ra=a;//声明引用并赋初值
   a=1;//给变量辅助
   cout<<"给变量a赋值1后"<<endl;
   cout<<"a= "<<a<<endl;//输出
   cout<<"ra= "<<ra<<endl;
   ra=2;
   cout<<"给引用ra赋值2后:"<<endl;
   cout<<"ra= "<<ra<<endl;
   cout<<"a= "<<a<<endl;
}

三、引用 *** 作

1。引用作为函数参数

void swap(int &p1,int &p2)//函数的形参p1,p2都是引用
{
   int p;
   p=p1;
   p1=p2;
   p2=p;
}
void main()
{
   int a,b;
   cout<<"Please input 2 number:"<<endl;
   cin>>a>>b;
   cout<<"Before swap:"<<endl;
   cout<<"a= "<<a<<endl;
   cout<<"b= "<<b<<endl;
   swap(a,b);
   cout<<"After swap:"<<endl;
   cout<<"a= "<<a<<endl;
   cout<<"b= "<<b<<endl;
}

2.引用作为返回值

类型标识符 &函数名(形参列表及类型说明)
{
    函数体
}
float temp;//定义全局变量temp
float func1(float r);
float &func2(float r);
float func1(float r)
{
    temp=(float)(r*r*3.14);
    return temp;
}
float &func2(float r)
{
    temp=(float)(r*r*3.14);
    return temp;
}
void main()
{
    float a=func1(5.0);
    float b=func2(5.0);
    float &c=func2(5.0);
    cout<<"a= "<<a<<endl;
    cout<<"b= "<<b<<endl;
    cout<<"c= "<<c<<endl;
}
四、动态内存分配

1.动态内存分配是指在程序运行期间可以根据需要随时申请内存和释放内存。
2.C++提供两种运算符进行动态内存管理:new和delete运算符。
3.new运算符用于申请需要的内存单位,返回指定类型的一个指针
4.new运算符的语法格式:
指针=new 数据类型;
5.指针应预先声明,指针指向的数据类型与new后的数据类型相同
6.申请成功,返回分配单元的首地址给指针,否则(比如没有 足够的内存空间),返回0(一个空指针)。
7.申请一个整型数据空间:
int *p;
p=new int;
8.申请一个包含10个元素的整型数组空间
int *p;
p=new int[10];
9.申请二维数组空间
指针=new 数据类型 [常量表达式1] [常量表达式2];
10.

int (*p)[3];
p=new int[2][3];
五、释放空间

1.delete 运算符是释放new申请到的内存,语法格式为:
delete 指针;//释放非数组内存单元
delete[常量] 指针;//释放数组内存单元
2.指针是指向需要释放的内存单元的指针的名字。
3.delete只删除动态内存单元,不会将指针本身删除
4.释放的对象不同,delete的语法格式也不同
5.对int型内存单元的申请与释放:
int*p;
p=new int;
*p=1;
delete p;
6.对数组内存单元的申请和释放:
int *p;
p=new int[10];
delete[10];

上述内容如有侵权,联系即删。
感谢阅读-感谢支持

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/875302.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存