引用(重点)
C/C++中指针作用是一样的,但C++提供了另一种给函数传递地址的途径(按引用传递),给已有的变量取别名。
语法:&和别名结合 表示引用;给某个变量取别名就定义某个变量;从上往下替换
int num = 100;
int &a = num;//此处&不是取地址,是标明a是引用变量(a是num的别名)
注意:
- 别名的类型应与取别名对象的类型对应
- 引用必须初始化,引用一旦初始化就不能再次修改别名
int num = 100;
int &a = num;//此处&不是取地址,是标明a是引用变量(a是num的别名)
int data = 20;
a = data;//不是将data别名为a,而是将data值赋值给a(a还是num的别名)
引用作用于数组
1、
int arr[5] = [1, 2, 3, 4, 5];
int (&my_arr)[5] = arr; //my_arr是数组arr的别名
2、用typedef给数组类型取别名
引用和函数的关系
作为函数的参数
常用交换操作
原因:只是形参的交换,变量的值赋值给a和b,a和b交换了,和data1、data2无关
使用地址可以交换成功
使用引用交换
作为函数的返回值
因为num是局部变量,函数结束后就释放了,因此引用为空。
用static改为静态就可访问,num不会被释放
当函数为左值时函数的返回值类型必须是引用
(静态变量只会被定义一次,因此第二次赋值时 static int num = 10 无效了)
引用的本质是常量指针
指针的引用
C语言的方式
引用的方式
常引用const type &a=b
1、引导出常引用
2、常量的引用(给常量取别名)
//给常量取别名
int &num = 10; // 错误
const int &num = 10;//正确
注:本文档仅学习总结