指针与引用


C++中指针和引用的应用很常见,连着的使用极易混淆,但是区别很明显:

1. 指针是变量,而引用只是变量的一个别名,而且引用使得别名与引用对象绑在了一起。
2.指针初始化之后还可以指向其他变量,但是引用只能初始化一次。
3.sizeof 操作的结果不一样,引用为所指向变量的大小,指针则返回指针本身的大小。
4. 引用不可以为空,但是指针可以是空指针。

#include
//引用的用法,引用就相当于给一个对象定义一个别名,作用在引用上的所有操作都与绑定的对象有关。
int main()
{
	int val = 11, val2 = 33;
	int &refval = val, &refval2 = val2; ///引用必须要初始化,使其绑定到一个变量上
	///修改引用的值将改变其所绑定的变量的值
	refval = -22;
	printf("%d %d\n", val, refval);//输出为-22,refval的值和val一样
	refval = refval2;   //引用一但初始化(绑定),将始终绑定到同一个特定对象上,无法绑定到另一个对象上
	printf("%d %d\n", val, refval);//输出为33,33
	return 0;
}

引用作为函数的参数

#include
using namespace std;
void swap(int &a,int &b)
{
	int t;
	t=a;
	a=b;
	b=t;
}
int main()
{
	int x,y;
	cin>>x>>y;
	swap(x,y);
	cout<

指针的引用

#include
using namespace std;
void add1(int * &a)
{
	(*a)++; 
}
void add2(int * &a)
{
	a++;
}
int main()
{
	int *x;
	x=new int; 
	printf("%x\n",x);
	scanf("%d",x);
	add1(x);
	cout<