【C/C++】C++与C的异同(二 引用)

引用是C++引入的一个概念,实际上像一个语法糖,本质上是指针的一种用法,只是隐藏了许多技术细节。

引用当左值,相当于一个别名

int main(){
	int i=0;//i也是别名
	int &a=i;
	a=100;
	int b=10;
	a>b?a:b=200; //三目运算符当左值 
	return 0;
}
//上下对应
int main(){
	int i=0;
	int* const a=&i;  //a的指向不能被改变,a指向的空间可以改变
	*a=100;
	int b=10;
	*(a>b?&a:&b)=200;
	return 0;
}
  • 函数的返回值也可以是引用,可链式编程。eg:cout<<“hello”<<“world”<<endl;

指针的引用

void getNum(int ** const n){
	int *tmp=(int*)malloc(sizeof(int));
	*tmp=1;
	*n=tmp;
}
int main(){
	int *a;
	getNum(&a);//此时*a=1;
	free(a);
	return 0;
}
//上下对应
void getNum(int *&n){
	n=(int*)malloc(sizeof(int));
	*n=2;
}
int main(){
	int *a;
	getNum(a);//此时*a=2
	free(a);
	return 0;
}

常量引用

int main(){
	int i=0;
	const int &a=i;
	int &b=0;//错误,b必须可以读地址
	const int &c=0;//正确,const 标识符将c=0存储到符号表中,要取地址将另外分配一个空间,可以取地址
	return 0;
}
//上下对应
int main(){
	int i=0;
	const int *a=&i;
	int *b=&0;//??不能取字面量地址
	//未知
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值