指针和引用是什么?
指针可以看成一个游标, 可以指向一个地址, 然后通过该地址访问对象, 访问完成后可以移动到下一个地址, 采用的运算符有 * 和 ->
引用是一个对象的别名, 虽然指向的也是对象地址, 但对于一个固定的对象, 只有一个别名 (引用), 同一个引用一般不会像指针一样移动, 采用的运算符是 &
指针和引用的区别?
除了所涵盖的意义不同, 用法上指针和引用虽然都可以通过地址访问对象, 但是指针可以指向 null, 而引用必须指向一个地址 (为空不推荐)
如引用所常常出现在引用传递上:
- void func(int& a, int &b){
- print(a);
- print(b);
- }
实际上采用指针也是可以实现的
- void func(int* a, int *b){
- print(*a);
- print(*b);
- }
既然指针比引用灵活, 有了指针为何还要引用?
引用的出现, 可以实现运算符号重载, 因为在运算符重载时, 指针修饰符 * 可能被重载掉, 导致无法使用指针, 而且使用指针书写更为繁琐, 引用最初来自于 C 语言, C++ 和 C# 为了兼容就继承而来.
使用引用建议?
能使用引用的地方, 尽量使用引用.
实际上, 引用因为不能指向空, 声明必须初始化, 相比于指针更为安全, 引用和指针在大多数的使用中是可以等价的. 为了安全, Java 语言中就取消了指针而只保留了引用.
来源: https://www.cnblogs.com/feichangnice/p/9075430.html