我正在参加「掘金·启航计划」
(欢迎大家关注我的微信公众号——控制工程研习,上面会分享很多我学习过程中总结的笔记。)
1. 指针和引用有什么区别?
(1)指针是一个实体,而引用是一个别名。(程序编译时,将指针和引用添加到符号表时,指针放入的是“指针变量的地址”,而引用则放入的是“所指向对象的地址”。所以说引用不可以改变,而指针可以。)
(2)指针的内容可以改变,且可以为空;而引用所对应的值不能发生改变,且不能为空。
(3)指针 sizeof 得到的是指针类型的大小(32位平台是 4字节,64 为8字节),而 引用sizeof得到的是它所代表的对象的大小。
(4)指针要想对对象进行操作,需要解引用之后才可以,而直接对引用进行的操作,都会直接作用到其所指的对象上。
2. 对同一个变量的指针和引用进行sizeof操作,会有什么区别吗?
sizeof(指针) 得到的是指针类型的大小, 而 sizeof(引用)得到的是它所代表的对象的大小。
示例:
#include<iostream>
using namespace std;
int main()
{
char b = 30;
char* p = &b;// 指针
char& ra = b;// 引用
cout << sizeof(p) << endl;
cout << sizeof(ra) << endl;
return 0;
}
运行结果:
★ 3. 指针为****什么会是4个字节,一定是4个字节吗?对指针做sizeof的结果与什么相关?
sizeof(指针) 返回的不一定是4个字节。其返回值是计算机系统的地址字节数,所以计算机系统的位数有关。如果是32位系统,返回4;16位系统返回2;64位系统,则返回8。