C++指针和引用及区别
1、指针和引用的本质(是什么)
(1)指针是存放内存地址的一种变量,特殊的地方就在它存放的是内存地址。因此,指针的大小不会像其他变量一样变化,只跟当前平台相关——不同平台内存地址的范围是不一样的,32位平台下,内存最大为4GB,因此只需要32bit就可以存下,所以sizeof(pointer)的大小是4字节。64位平台下,32位就不够用了,要想内存地址能够都一一表示,就需要64bit(但是目前应该没有这么大的内存吧?),因此sizeof(pointer)是8。
(2)引用的本质是“变量的别名”,就是给变量又重新起了一个名字,既然是“别名”,那么就一定要有本体。
2、声明和初始化时的区别
指针指向的是一个内存地址, 因此可以指向一块为0x00000000的地址,声明时可以暂时不初始化(不推荐),即pointer = NULL;
引用是变量的别名,别名就一定对应着一个“本名”,因此必须在声明时就初始化,且不能初始化为空。
3. 关系
• 引用在语言内部用指针实现