欢迎阅读新一期的c++模块————引用
??个人主页:-Joker-
🏷?专栏:C++
📜代码仓库:c_code
🌹🌹欢迎大佬们的阅读和三连关注,顺着评论回访🌹🌹
什么是引用
概念:引用是为已存在的变量取了一个别名,引用和引用的变量共用同一块内存空间
引用的格式:类型& 引用变量名(对象名) = 引用实体; int& ra = a; ra为a的引用
- 引用实体和引用类型必须为同种类型
- 引用在定义时必须初始化
- 一个实体可以有多个引用,但一个引用只能引用一个实体
- 没有空引用
常引用:const int &a=b
就相当于 const int * const a=b。不仅仅是a这个地址不可修改,而且其指向的内存空间也不可修改。
const修饰的类型必须使用常引用
例如
void Test1()
{
const int a = 1;
int& b = a; // 该语句编译时会出错,a为常量
const int& c = a;
double d = 1.00;
int& rd = d; // 该语句编译时会出错,类型不同
}
1.引用普通变量
void Test2()
{
int a = 10;
int & b = a;
const int& c = a;
b += 10;
a += 10;
c += 10;//c不可修改所以会报错
}
2.引用常量
void Test3()
{
int n = 1;
const int m =2;
int& x = n;
const int& y = m;
const int& z =1;
return 0;
}
void Swap(int& a, int& b)
{
int tmp = a;
a = b;
b = tmp;
}
int& Test4(int& a)
{
a+=20;
return a;
}
从语法规则上讲,指针变量是某个变量或对象的地址,而引用是某个实例的别名。
int a = 10;
int* p = &a;//指针p取a的地址,需要分配内存
int& b = a;//b是a的别名,并不需要分配空间
int a = 10;
int* p = &a;
int& b = a;
*p = 20;//指针想要对a的值修改需要解引用
b = 20;//b只是a的别名所以可以直接修改
int a = 10;
int* p = &a;
int& x = a;
int b = 20;
p = &b;//p的地址由a变成了b的地址
x = b;//==> a = 20
int a = 10;
int* p = &a;
int& b = a;
printf("p = %p, b = %d\n", p, b);
p++;
b++;
printf("p = %p, b = %d", p, b);
由此我们可以看出指针++是让地址改变,而引用++则是对a的值进行改变
综上所述 :引用本身是一个变量,但是这个变量又仅仅是另外一个变量一个别名,它不占用内存空间,它不是指针哦!仅仅是一个别名!
以上就是对C++引用的介绍,各位老爷别忘了给个支持三连🌹🌹