C++杂记。。(引用、const、函数特性、内存管理)

引用

指针类型的引用
类型 *&指针引用名 = 指针;
在这里插入图片描述

在这里插入图片描述

结构体的引用
在这里插入图片描述

函数参数引用
在这里插入图片描述


const

int const *p = NULL;
const int *p = NULL;	//和上一句等价

int x = 3;
const int *p = &x;	//此时不能通过*p修改x的值(可以用p = &y)

int x = 3;
int *const p = &x;	//此时不能使用p来修改x的值

int x = 3;
const int &y = x;	//y是x的引用,即x的别名。
x=10;	//可以修改x的值,y=20错误,y作为x的别名是const不可变的

在这里插入图片描述
定义两个int x和y,再定义int const p和int const p都 = &x,此时p和pp的值都为x的地址。用p=&y修改p的值为y的地址,用pp=y修改pp的值(即修改x的值)。此时,p的值为y的地址,p的值即y的值;pp的值为x的地址,x的值已被pp = y修改为y的值。

函数形参的const
在这里插入图片描述
没有const修饰的时候,形参的改变影响了实参的值。
在这里插入图片描述
有const修饰,编译器会报错,无法修改只读参数a,b的值。


函数特性

函数默认参数,必须在参数表的最右侧,无实参则使用默认值,否则实参覆盖默认值:

void fun(int i, int j = 10, int k = 5);	//声明函数时,给了默认值
void fun(int i, int j, int k)	//定义函数时,不要写默认值,不同编译器会有报错
{
	cout << i << j << k;
}

内联函数
编译时将函数体代码和实参代替函数调用语句,减少了调用的步骤(尤其在循环体内会减少时间)
定义函数的时候用inline关键字

内联编译是建议性的:由编译器决定;
逻辑简单,调用频繁的函数,建议使用内联函数;
递归函数无法使用内联函数

内存管理

内存的申请和释放
new、delete(运算符)
申请内存: int *p = new int;
释放内存: delete p; p = NULL;

申请释放 块内存

int *arr = new int[10];	//申请了10个整型的块内存
delete []arr;		//释放块内存

申请内存需要注意判断分配是否成功:

int *p = new int[1000];
if(NULL == p){
	//内存分配失败;
}

释放内存需要注意:

int *p = new int;
if(NULL == p){
	//内存分配失败;
}
delete p;
p = NULL;	//释放内存之后,将p指向NULL

int *p = new int[1000];
if(NULL == p){
	//内存分配失败
}
delete []p;
p = NULL;	//delete之后将p指向NULL,以防出错

delete []p;
p = NULL;

申请内存需要判断是否成功,释放内存需要设空指针

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值