引用可以被const修饰,无法通过引用修改数据,称为常引用
int & const ref1 = age; //不能修改指向,可以赋值ref1间接修改age的值
ref1 =30;
int const &ref1 = age; //什么都不能
const引用特点
const int &ref = 30;
int sum(int &v1, int &v2) {
return v1 + v2;
}
int main() {
// 非const实参
int a = 10;
int b = 20;
sum(a, b);
// const实参
const int c = 10;
const int d = 20;
sum(c, d);
sum(10 ,20); //这里会报错,函数声明必须加const
/*
int sum(const int &v1,const int &v2)
*/
}
绕来绕去的语法直接看汇编
int age = 10;
const long &rAge = age; //写int写long结果不一样
age = 30;
cout << "age is" << age << endl;
cout << "rAge is" << rAge << endl;
不同语言的汇编
- java、c++、oc、swift-->汇编机器码(不一样),但最终都在同一个CPU的指令集架构中
数组名arr是数组的地址,是指向首元素的一个指针
int arr[] = {1, 2, 3};
*arr //取出数组的值1
int (&ref)[3] = arr; //引用数组
ref[0] = 10;
int * const &ref = arr; //地址值不可变,为常量,引用加const