- 指针指向的是变量的存储地址,引用是变量的别名
- sizeof(指针)是地址的大小,sizeof(引用)是变量的大小
- 引用必须在定义的时候进行初始化,而且一旦初始化了,就不可以再成为别的变量的引用,但是指针可以随意转变指向。
- 指针可以有多级,引用只有一级
- 指针和引用作为函数参数的时候是不同的效果,引用参数可以让主程序的变量改变。具体请看下面的例程。
#include <iostream>
#include <memory>
using namespace std;
/*void add(int *a)
{
*a++;
}
int main()
{
int *b=new int(1);
add(b); ///实际并没有改变*b的值,因为传进调用函数的是*b的复制
cout<<*b<<endl; //输出为1
}*/
/*void add(int a)
{
a++;
}
int main()
{
int b=1;
add(b); 输出结果还是1
cout<<b<<endl;
}*/
void add(int &a)
{
a++;
}
int main()
{
int b=1;
add(b);
cout<<b<<endl; ///输出为2,因为add函数的参数是引用类型,所以可以改变b的值
}