C++中指针和引用的应用很常见,连着的使用极易混淆,但是区别很明显:
1. 指针是变量,而引用只是变量的一个别名,而且引用使得别名与引用对象绑在了一起。
2.指针初始化之后还可以指向其他变量,但是引用只能初始化一次。
3.sizeof 操作的结果不一样,引用为所指向变量的大小,指针则返回指针本身的大小。
4. 引用不可以为空,但是指针可以是空指针。
#include<cstdio>
//引用的用法,引用就相当于给一个对象定义一个别名,作用在引用上的所有操作都与绑定的对象有关。
int Yin()
{
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<cstdio>
//指针的用法
int main()
{
int val1 = 11, val2 = 33;
int *p = &val1; //初始化指针指向变量1
printf("%d %p\n", val1, p);//输出为11 0030F8B4
p = &val2;
printf("%d %p\n", val2, p);//输出为33 0030F8B0 指针的指向发生了变化,值也改变了
return 0;
}
上例为指针的简单应用。