C++面试题(3)| 关于指针和引用

577 阅读1分钟

我正在参加「掘金·启航计划」

image.png

(欢迎大家关注我的微信公众号——控制工程研习,上面会分享很多我学习过程中总结的笔记。)

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。