引用
注意
- 引用必须初始化,一旦指向了某个变量,就不可以改变指向
#include <iostream>
using namespace std;
int main()
{
int age = 10;
int height = 110;
int& refAge = age;
refAge = 11;
cout << age << endl;
//注意区分,这里不是改变指向
refAge = height;
refAge = 111;
cout << height << endl;
return 0;
}
- 引用就是变量的别名(结构体、指针、数组)
#include <iostream>
using namespace std;
int main()
{
int a = 10;
int* p = &a;
int*& ref = p;
*ref = 5;
cout << a << endl;
int array[] = { 1,2,3 };
//写法类比数组指针,一个指针指向3位数组
//看变量是什么,从右往左看,括号优先
//const 修饰右边的东西
int(&ref1)[3] = array;
/*
另一种写法
arr可以理解指向不能改的指针
int arr[] = { 1,2,3 };
int * const &p = arr;
cout << p[1] << endl;
*/
ref1[0] = 10;
for (auto empty : ref1) {
cout << empty << " ";
}
cout << endl;
return 0;
}
数组名
arr可以理解指向不能改的指针
本质
- 引用的本质就是指针,只是编译器弱化了他的功能。弱化指针
#include <iostream>
using namespace std;
struct Student
{
int& age;
};
int main()
{
//不能直接sizeof引用,这样就是别名
//visual studio可以选择x86、x64,观察不同的结果
cout<< sizeof(Student) << endl;
return 0;
}