Bootstrap

小米C++ 面试题及参考答案下(120道面试题覆盖各种类型八股文)

指针和引用的区别?怎么实现的?

指针和引用有以下一些主要区别。

从概念上来说,指针是一个变量,它存储的是另一个变量的地址。可以通过指针来间接访问所指向的变量。例如,我们定义一个整型指针int *p;,它可以指向一个整型变量的内存地址。而引用是一个别名,它必须在定义的时候初始化,并且在之后的使用中,它和它所引用的变量完全等价。比如int a = 10; int &b = a;,这里b就是a的引用,对b的操作就是对a的操作。

从实现机制来讲,指针在内存中有自己独立的存储空间,这个空间用来存储所指向变量的地址。它可以被重新赋值,指向不同的变量,例如int c = 5; p = &c;。指针可以为空,即不指向任何有效的内存地址,比如int *q = nullptr;。而引用本质上是原变量的一个别名,它没有自己独立的存储空间(在底层实现上可能有一些细微的差别,但对于使用者的语义来说是没有额外存储的)。一旦引用被初始化,它就不能再引用其他变量了。

在函

;