引用(变量的别名)

引用的本质,就是变量的别名。通俗地讲就是变量的绰号,任何对变量引用的操作都相当于操作变量本身。如下:

# include <iostream>
using namespace std;

int main()
{
    int val = 1;
    int& p = val;     //p是val的别名
    cout<<p<<" "<<val<<endl;    //输出1 1 
    
    p = 2;
    cout<<p<<" "<<val<<endl;    //输出2 2  
    
    val = 3;
    cout<<p<<" "<<val<<endl;     //输出3 3
    
    return 0;
}

引用和指针的区别:

1. 初始化的要求不同。

引用在声明的时候必须初始化(而指针则不是必须),就像给一个人取外号,这个人首先必须要存在。引用不可能存在空引用(需要初始化),而指针可以为NULL空指针。如下:

        int val = 1;
	
	int& p = val; 	//p是val的别名,引用必须初始化
	 
	int* p;	
	p = &val; //指针可以在需要的时候完成指针的初始化 
2. 对重新关联的要求不同。

引用从一而终,指针说变就变。引用就是变量本身,是别名而已,固定不变;而指针是一个变量,是可以变的,即可以重新被赋值。

# include <iostream>
using namespace std;
//引用与指针对重新关联的要求不同:前者就是本身别名从一而终永不改变关联性;后者是变量,水性杨花可以变 
int main()
{
	int x = 0;
	
	int& r = x; 	//引用:r是x的别名
	int* p = &x;	//指针 
	cout<<r<<" "<<x<<" "<<p<<endl; 
	 
	int y = 1;
	r = y;//这条语句不是重新改变r引用的变量,而是对其进行赋值,此时引用r和变量x的值都为1 
	p = &y;//重新改变指针p所指向的变量,此时指针p的值发生了变化 
	cout<<r<<" "<<x<<" "<<p<<endl; 
	
	return 0;
}

引用的目的:

引用的主要应用就是传递函数的参数和返回值,与指针类似却也有些不同。哪里不同,见下面

引用与指针在传递函数参数和返回值的不同:

# include <iostream>
using namespace std;
//三种传递函数参数和返回值的方法总结 

int func1(int x)
{
	return x+1;
} 

void func2(int& x)
{
	++x;
}

void func3(int* x)
{
	*x += 1;
}

int main()
{
	int x = 1;
	
	func1(x);
	cout<<x<<endl;	//x不变还是1
	
	func2(x);
	cout<<x<<endl;  //x = 2
	
	func3(&x); 
	cout<<x<<endl;  //x = 3 
		
	return 0;
}
以上出三种传递函数参数和返回值的方法总结,即可看出引用与指针在传递函数参数和返回值的不同。既然功能类似,那么如何选择引用和指针呢?


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值