相同点:
他们都是和地址有关系的,我们可以看到指针指向一块内存,而引用是一块内存的别名;
不同点:
1指针是一个实体他在栈中有自己使用的空间,但是引用没有;
2引用必须初始化,指针不用但是最好初始化
3指针使用时必须加*,引用不用;
4引用只能初始化一次是个专一的人,指针不是;
5引用不用const去修饰,但是指针可以
6指针和地址运用自增(++)不同,引用是值进行自增,而指针是地址进行自增;
注意:引用的话,只是给变量起了一个别名,并不另外占用空间,而指针是要在栈中开辟空间的
关于引用只能初始化一次,是个专一的人的解释如下:
int a = 3;
int b = 4;
int& c = a;
cout << "a=" << a << endl;
cout << "c=" << c << endl;
cout << "a id=" << &a << endl;
cout << "c id=" << &c << endl;
c = b;
cout << "修改后" << endl;
cout << "c=" << c << endl;
cout << "c id" << &c << endl;
cout << "a=" << a << endl;
上面的代码输出结果如下:
由上面的代码,以及其对应的输出结果可知,当再次修改引用的值时,引用的地址并没有改变,还是等于第一次初始化时的地址,另外当对引用c进行再次赋值时,对应的a的值也被修改,这才是引用只能初始化一次的解释。