版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Sea_muxixi/article/details/84521606
指针和引用主要有三个区别。
1:引用必须初始化,但是指针可以为null。
int* a = NULL;
int &b;//这里报错
int c = 10;
int &d = c;
2:使用引用可能会比使用指针更有效率。
主要原因是使用引用之前不需要测试其有效性。
void printDouble(const double &a)
{
cout << a << endl;
}
void printDouble(const double *a)
{
if (a)
cout << *a << endl;
}
相同的功能,上面的a可以保证肯定是double类型,但下面的a可能是NULL;这里又多了一步。
3:指针可以指向另一个对象,但是引用永远代表最初获得的对象。
string s1("Nancy");
string s2("Clancy");
string &rs = s1; //rs 代表 s1
string *ps = &s1;//ps 指向 s1
rs = s2; // rs 仍然代表s1,但是s1的值变成了"Clancy"
ps = &s2;// ps 现在指向s2,s1没有变化