引用

引用

  • 引用和指针的区别
    1:引用在定义时必须初始化,指针没有要求
    2:引用初始化时指向一个实体,之后不能再指向其他实体,而指针可以在任何时候指向任何同类型0的实体
    3:没有NULL引用但有空指针
    4:sizeof(引用)结果是指向实体类型的大小,而sizeof(指针)是固定的8,或者4
    5:引用自加即引用实体自加,而指针自加指的是向后偏移一个类型的大小
    6:有多级指针但没有多级引用
    7:访问实体方式不同,指针需要解引用而引用不需要
  • const引用(
    1.引用指向const修饰的变量或者是常量时也需要用const修饰
    2.aa隐式类型转换时生成一个临时的整形变量,bb指向此临时变量(临时变量具有常性
#include<iostream>
using namespace std;
//引用和指针的区别
//1:引用在定义时必须初始化,指针没有要求
//2:引用初始化时指向一个实体,之后不能再指向其他实体,而指针可以在任何时候指向任何同类型0的实体 
//3:没有NULL引用但有空指针
//4:sizeof(引用)结果是指向实体类型的大小,而sizeof(指针)是固定的8,或者4
//5:引用自加即引用实体自加,而指针自加指的是向后偏移一个类型的大小
//6:有多级指针但没有多级引用
//7:访问实体方式不同,指针需要解引用而引用不需要
 
//引用:底层通过指针实现 
void test(){
	//引用定义时必须初始化 int &b;(error) 
	//多个不同的引用可以指向同一个实体 
	int a=3;
	int& b=a;
	cout<<"b="<<b<<endl;
	int& c=a;
	int aa=7;//引用定义后,不会再改变指向的实体,因此这是一个赋值操作 
	b=aa;
	cout<<"b="<<b<<endl; 
	cout<<"a="<<a<<endl;
	cout<<"b="<<b<<endl; 
	cout<<"c="<<c<<endl; 
	cout<<&a<<" "<<&b<<" "<<&c<<endl;
}
//引用做返回值(返回值变量的生命周期要大于函数的生命周期 )int& add(int a)(error) 
int& add(int& a){
	return ++a;
} 
void test1(){
	int a=0;
	int& b=add(a);//b和add(a)都指向相同的实体a 
	int c=add(a);	//用a的值给c赋值
	cout<<&a<<" "<<&b<<endl;
	cout<<&c<<endl; 
} 
//const引用 (引用指向const修饰的变量或者是常量时也需要用const修饰)
void test2(){
	const int a=10;
	const int& b=a; 
	const int& r=19;
	
	double aa=2.0;
	const int& bb=aa;//aa隐式类型转换时生成一个临时的整形变量,bb指向此临时变量(临时变量具有常性) 
} 
int main(){
	//test();
	test1();
} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值