博客
关于我
c/c++教程 - 2.2 引用的使用方法,引用做函数参数,引用做返回值,引用的本质,常量引用
阅读量:352 次
发布时间:2019-03-04

本文共 2438 字,大约阅读时间需要 8 分钟。

2. 引用

学习目的:取代C中的指针。

目录


 

2.1 引用的基本使用方法

  • 作用:给变量起别名。
  • 语法
数据类型  &别名  =  原名
int main() {	int a = 10;	// 创建引用	int& b = a;	cout << "a = " << a << endl;	cout << "b = " << b << endl << endl;	b = 100;	cout << "a = " << a << endl;	cout << "b = " << b << endl << endl;	system("pause");	return 0;}---------------------------------------------------------------a = 10b = 10a = 100b = 100请按任意键继续. . .

 

2.2 引用注意事项

  • 引用必须初始化
  • 引用在初始化后,不可以改变

示例:

int a = 10;int &b = a;1.引用必须要初始化    int &b;    // 错误的2.引用一旦初始化后,就不可以更改了    &b = c;    // 语法错误    b = c;     // 并不是更改引用,而是赋值操作

 

2.3 引用做函数参数

  • 作用:通过引用参数产生的效果,同按地址传递是一样的。
  • 好处:相比指针,引用的语法更清楚简单。
// 值传递void swap01(int a, int b){	int temp = a;	a = b;	b = temp;}// 地址传递void swap02(int* a, int* b){	int temp = *a;	*a = *b;	*b = temp;}// 引用传递void swap03(int &a, int &b){	int temp = a;	a = b;	b = temp;}int main() {	int a = 10,b = 20;	cout << "a = " << a << endl;	cout << "b = " << b << endl << endl;	//swap01(a, b);	//swap02(&a, &b);	swap03(a, b);	cout << "a = " << a << endl;	cout << "b = " << b << endl << endl;	system("pause");	return 0;}--------------------------------------------------------------------------a = 10b = 20a = 20b = 10请按任意键继续. . .

 

2.4引用做函数返回值

  • 作用:引用是可以作为函数的返回值存在的。
  • 注意:不要返回局部变量的引用。
// 不要返回局部变量的引用。int& test1(){	int a = 10;	return a;}int main() {	int& temp = test1();	cout << "temp = " << temp << endl;	cout << "temp = " << temp << endl;	cout << "temp = " << temp << endl;	cout << "temp = " << temp << endl;	system("pause");	return 0;}------------------------------------------------------temp = 10temp = 2050341264temp = 2050341264temp = 2050341264请按任意键继续. . .

 

  • 用法:函数的调用可以作为左值。
int& test1(){	static int a = 10;	// 静态变量存放于全局区	return a;}int main() {	int& temp = test1();	cout << "temp = " << temp << endl;	cout << "temp = " << temp << endl;	test1() = 1000;		// 如果函数的返回值是引用,这个函数调用可以作为左值	cout << "temp = " << temp << endl;	cout << "temp = " << temp << endl;	system("pause");	return 0;}--------------------------------------------------------------------temp = 10temp = 10temp = 1000temp = 1000请按任意键继续. . .

 

2.5 引用的本质

本质:引用的本质在C++内部实现是一个指针常量。

解引用的过程在编译器处理。

 

2.6 常量引用

  • 作用:常量引用主要用来修饰形参,防止误操作。
  • 用法:在函数形参列表中,可以加const修饰形参,防止形参改变实参。
int& ref = 10;	            // 这种写法编译器会报错const int& ref = 10;	    // 相当于 int temp = 10; const int& ref = temp;ref = 20;		    // 编译器会报错。加const后变为只读,不可修改
int showValue(const int& a){	a += 10;            // 这句编译器会报错,常量引用的值不可修改	cout << a << endl;	return 0;}

 

相关教程

  • 开发环境搭建
  • 推荐视频
  • 已投币三连,非常细致的视频教程,感谢up主。

转载地址:http://onqe.baihongyu.com/

你可能感兴趣的文章
mysql之分页查询
查看>>
Mysql之备份与恢复
查看>>
mysql之子查询
查看>>
MySQL之字符串函数
查看>>
mysql之常见函数
查看>>
Mysql之性能优化--索引的使用
查看>>
mysql之旅【第一篇】
查看>>
Mysql之索引选择及优化
查看>>
mysql之联合查询UNION
查看>>
mysql之连接查询,多表连接
查看>>
mysql乐观锁总结和实践 - 青葱岁月 - ITeye博客
查看>>
mysql也能注册到eureka_SpringCloud如何向Eureka中进行注册微服务-百度经验
查看>>
mysql乱码
查看>>
Mysql事务。开启事务、脏读、不可重复读、幻读、隔离级别
查看>>
MySQL事务与锁详解
查看>>
MySQL事务原理以及MVCC详解
查看>>
MySQL事务及其特性与锁机制
查看>>
mysql事务理解
查看>>
MySQL事务详解结合MVCC机制的理解
查看>>
MySQL事务隔离级别:读未提交、读已提交、可重复读和串行
查看>>