C++引用
所属分类 c
浏览量 889
引用变量是一个别名
引用 vs 指针
不存在空引用
引用初始化后不能指向另一个对象
引用必须在创建时被初始化
引用不是定义一个新的变量或对象,不会为引用开辟新的空间存储这个引用
类型 &引用名=目标变量名;
int i = 7;
int& refi = i;
对数组的引用
类型 (&引用名)[数组元素数量]=数组名;
对指针的引用
类型 *&引用名=指针名;
常引用
const 类型 &引用名=目标变量名;
把引用作为 参数 和 返回值
不要返回局部变量的指针或引用
函数执行完后,将释放分配给局部变量的存储空间,局部变量只是临时的存储空间
可以返回局部变量本身,返回值是局部变量的拷贝副本
用引用传递函数参数,传递过程不产生副本,提升效率
尽量使用引用代替指针
避免返回函数内部通过new分配的内存的引用 ,存在内存泄露风险
例子代码
https://gitee.com/dyyx/hellocode/blob/master/web/tech/cpp/demo/refdemo.cpp
#include
#include
using namespace std;
void swap(int &a,int &b){
int temp=a;
a=b;
b=temp;
}
int sum(int(&a)[3]){
return a[0] + a[1] + a[2];
}
int main(){
int i = 7;
int &refi = i;
cout<< i << " " << refi << endl;
cout<< "address " << &i << " " << &refi << endl;
int *pi=&i;
int *&refp=pi;
printf("%d %d %d %p %p %p\n",i,*pi,*refp,&i,pi,refp);
int a[3]={1,2,3};
int (&refa)[3]=a;
printf("%d %d %d \n",refa[0],refa[1],refa[2]);
int b = sum(a);
printf("sum=%d\n",b);
int x=1,y=2;
printf("%d %d \n",x,y);
swap(x,y);
printf("%d %d \n",x,y);/
}
上一篇
下一篇
神奇的js
C/C++常用库及工具
物联网五大核心技术
micrometer不同使用方法的性能对比测试
c++ 返回引用
px em rem 区别