关于C++中的引用类型(特点以及与指针的区别)
今天上数据结构与算法课时,接触到了没有接触过的C++中的新概念——引用类型。也就是在函数形参部分前面加上&标识符,使得形参中的地址得以copy下来,接下来便可以会更加方便地使用。
引用类型
引用(&)是标识符的别名
定义一个引用时,必须同时对它进行初始化,使它指向一个已存在的对象
例如:
int i,j;
int &ri = i; //定义int引用ri,并初始化为变量i的引用
j = 10
ri = j; //相当于i=j
一旦一个引用被初始化后,就不能改为指向其他对象
引用可以作为形参,可以实现参数的双向传递
下面展示一下例子:
#include <stdio.h>
#include
#include
#include
#include <stdio.h>
using namespace std;
int gg(int a, int b)
{
int t = a;
a = b;
b = t;
}
int main()
{
int x, y;
cin >> x >> y >> endl;
gg(x,y);
cout << x << y << endl;
return 0;
}
像这个代码,运行之后x,y地值依旧没有改变。为什么?
子函数里的变量无论怎么操作,作用域只有子函数内部,不会影响主函数。
程序在调用子函数时会为x y重新开辟内存,并将实参的值复制到x y中去,然后在gg函数中,a,b确实发生交换了,但这跟主函数中的x,y毫无关系呀,x,y并未发生改变呀。子函数调用结束后形参所占内存自动释放。
但是做一点修改就不一样了:
#include <stdio.h>
#include
#include
#include
using namespace std;
int gg(int &a, int &b)
{
int t = a;
a = b;
b = t;
}
int main()
{
int x, y;
cin >> x >> y >> endl;
gg(x,y);
cout << x << y << endl;
return 0;
}
引用型变量其实是将主函数中变量的地址传递给了子函数,这样子函数直接去操作主函数中的变量,并不会再为形参开辟内存,这与指针是一样的。
总结
1.引用类型是C++里的类型。
2.引用类型只能赋值一次,不能重新赋值。(是指地址只能引用一次,但是地址里的值可以改变)
3.引用只是变量的一个别名。
4.可以理解为编译器维护的一个指针,但是不会占用内存。
5.使用引用可以像指针一样去访问、修改对象的内容,但是更方便,同时也更安全。