返回

指针和引用

介绍指针和引用的区别

指针和引用的区别

1.定义方式不同:指针使用所指对象的类型加上 * 定义,如:int* p; 可以不初始化。而引用定义时使用变量名加 & 的组合, 并且引用必须初始化

2.内存占用不同:指针本身是需要占用内存的,而引用不需要占用内存。因为引用是对象的别名,它指向引用对象的内存。

3.操作符重载不同:指针的操作符(*、->)可以进行重载,而引用不能重载操作符

4.指针所指的对象可以更改,而引用一旦初始化后,便无法指向其他的对象。

5.指针可以指向指针,即指针的指针(甚至是指针的指针的指针);因为引用本身不是一个对象,所以不能定义引用的引用。引用虽然可以作为初始值,但实际上还是以与引用绑定的对象为初始值。

举例:

int num=1;

int* p=#
int** p2=&p;   //指向指针的指针

int& ref=num;
int&& ref2=ref;   //错误,&&不表示引用的引用
int& ref3=ref;    //正确,ref3实际上指向的num

适用场景

指针:

1.动态分配内存时:使用 new 动态分配内存时,需要使用指针管理这些内存空间。

2.需要指向不同对象时:引用一旦初始化,无法指向其他对象,因此,这种情况只能使用指针。

引用:

1.函数传参:引用即对象的别名,在函数中可直接对引用的对象进行操作,无需解引用。并且可以节省大量内存空间,因为引用并未分配实际的内存空间。

2.函数返回值:使用引用作为返回值,可以减少对返回值的拷贝,提高效率。

综上,指针和引用都是c++非常重要的工具,实际应用中要根据具体需求选择合适的方式。

Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy