c++远征之离港篇

引用:变量的别名

引用不能单独存在,所以不能只有别名
引用必须初始化

1、基本数据类型的引用

int a = 3;
int &b = a;
b = 5;
cout << a << endl;

2、结构体类型的引用

typedef struct{
	int x;
	int y;
}Coor;

Coor c1;
Coor c = c1;
c.x = 1;
c.y = 2;
cout << c1.x << "," << c1.y << endl;

3、指针类型的引用

int a = 10;
int *p = &a;
int *&q = p;
*q = 20;
cout << a << endl;

4、引用做参数

void fun1(int &a, int &b){
	int c(0);
	c = a;
	a = b;
	b = c;
}

引用的特点与好处没搞明白

控制变化的const

1、const与基本数据类型

int x = 3;//变量
const int x = 3;//常量
变量名存储地址存储内容
x&x3
x&x3(不可变)

2、const与指针

const int *p = NULL;//*p不可变
int *const p = NULL;//p不可变
const int *const p = NULL;//*p、p均不可变

3、const与引用

int a = 3;
const int &b = a;

ps. const控制后面的变量,使其存储内容不可更改。

函数新特性

1、参数默认值

有默认参数值参数位于参数表最右侧
声明函数时给默认值,定义函数时不用
无实参则用默认值,有实参则覆盖默认值

int fun(int i, int j=1, int k=2);//声明

int fun(i,j,k){
	int sum(0);
	sum = i + j + k;
	return sum;
}

2、函数重载

在相同的作用域内,用同一函数名定义的多个函数,参数个数和参数类型不同。

int get_max(int x, int y);
double get_max(double x, double y);

编译器如何识别重载函数?
get_max_int_int
get_max_double_double

3、内联函数

关键字 inline
建议性编译
好处:减少函数调用步骤,提供程序效率
适用于逻辑简单(不含for、while循环),调用频繁的函数
递归函数不能作为内联函数

内存管理

内存本质是资源,由OS掌控,我们能做的是申请/归还。
内存的申请与归还
申请 new
归还 delete

//申请内存
int *p = new int;
delete p;
p = NULL;

//申请块内存
int *arr = new int[1000];
if(NULL == arr){
	cout << "内存申请失败" << endl;
}
else{
	//do
}
delete []arr;
arr = NULL;

ps. new与delete配套使用
申请内存需要判断时候成功,释放内存需要设空指针。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值