首页  

C++引用     所属分类 c 浏览量 96
引用变量是一个别名

引用 vs 指针
不存在空引用 
引用初始化后不能指向另一个对象
引用必须在创建时被初始化
引用不是定义一个新的变量或对象,不会为引用开辟新的空间存储这个引用


类型 &引用名=目标变量名;

int  i = 7;
int& refi = i;

对数组的引用
类型 (&引用名)[数组元素数量]=数组名;
对指针的引用
类型 *&引用名=指针名;

常引用
const 类型 &引用名=目标变量名;

   
把引用作为 参数 和 返回值	


不要返回局部变量的指针或引用
函数执行完后,将释放分配给局部变量的存储空间,局部变量只是临时的存储空间
可以返回局部变量本身,返回值是局部变量的拷贝副本
用引用传递函数参数,传递过程不产生副本,提升效率
尽量使用引用代替指针
避免返回函数内部通过new分配的内存的引用 ,存在内存泄露风险



例子代码 https://gitee.com/dyyx/hellocode/blob/master/web/tech/cpp/demo/refdemo.cpp #include<iostream> #include<stdio.h> 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 区别