C++引用与C语言中的指针
引用(reference)为对象起了另外一个名字(引用即别名)
1 由于无法令引用重新绑定到另一个对象 ,所以引用必须初始化。
2 引用并非对象,相反它只是一个已经存在的对象起的另外的名字。
eg:int i=0;
int&ri=i;
ri=3;
std::cout<<i<<" "<<ri<<std::endl;
输出 :3 3
指针(pointer)(其实就是地址变量)
1 指针是一个对象,允许对指针赋值和拷贝。
2 指针无需在定义时赋初值。
3 和其他内置类型一样,在块作用域内定义的指针如果没有初始化,也将拥有不确定的值。
eg:#include<stdio.h>
/*typedef int* ElemType;
int fun(ElemType a)
{
*a=3;
return 0;
}
int main()
{
ElemType b;
fun(b);
return 0;//地址不能乱用
}*/
运行:这是一个严重的错误,因为指针变量b没有赋确定的值,且又试图修改所指内容。
正确的应为:
#include<stdio.h>
typedef int* ElemType;
int fun(ElemType a)
{
*a=3;
return 0;
}
int main()
{
int a=3;
ElemType b=&a;//指针最好赋确定的值
fun(b);
printf("%d",a);
return 0;//地址不能乱用
}