复盘:c++中64位和32位操作系统内存中,指针类型占用多少内存空间?
提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性
关于互联网大厂的笔试面试,都是需要细心准备的
(1)自己的科研经历,科研内容,学习的相关领域知识,要熟悉熟透了
(2)自己的实习经历,做了什么内容,学习的领域知识,要熟悉熟透了
(3)除了科研,实习之外,平时自己关注的前沿知识,也不要落下,仔细了解,面试官很在乎你是否喜欢追进新科技,跟进创新概念和技术
(4)准备数据结构与算法,有笔试的大厂,第一关就是手撕代码做算法题
面试中,实际上,你准备数据结构与算法时以备不时之需,有足够的信心面对面试官可能问的算法题,很多情况下你的科研经历和实习经历足够跟面试官聊了,就不需要考你算法了。但很多大厂就会面试问你算法题,因此不论为了笔试面试,数据结构与算法必须熟悉熟透了
秋招提前批好多大厂不考笔试,直接面试,能否免笔试去面试,那就看你简历实力有多强了。
32位和64位操作系统指针所占空间大小?
因为内存是由字节组成的,每个字节都有一个地址编号。
指针变量主要是存放相同数据类型的变量的首地址,
这里的地址就是指内存中某个字节的编号,
而这个编号的确定是由地址总线决定的,
操作系统的位数决定了指针变量所占的字节数。
如果是32位操作系统,也就是地址总线是32位,则它的寻址范围就是02^32(04GB),所以每一个字节的编址就会由32个0或者1组成。
例:第1个字节的编址是32个0,最后1个的编址是32个1。
一个字节有8位,32位则需要4个字节。
如果是64位操作系统,也就是地址总线是64位,则它的寻址范围就是02^64(04GB),所以每一个字节的编址就会由64个0或者1组成。
例:第1个字节的编址是64个0,最后1个的编址是64个1。
一个字节有8位,64位则需要8个字节。
懂?
在不同操作系统中指针大小结论
(1)在32位操作系统下,指针是占4个字节空间大小,不管是什么数据类型
(2)在64位操作系统下,指针是占8个字节空间大小,不管是什么数据类型
指针就是地址,管你啥数据类型,我们指针只看地址,地址就是32位二进制数或者64位二进制数构成的地址
结论证明
32位操作系统
cout <<"sizeof(int *)占用地址空间为:" << sizeof(int*) << endl;
cout << "sizeof(double *)占用地址空间为:" << sizeof(double *) << endl;
cout << "sizeof(float *)占用地址空间为:" << sizeof(float *) << endl;
cout << "sizeof(char *)占用地址空间为:" << sizeof(char *) << endl;
x86系统就是32位
64位操作系统
cout <<"sizeof(int *)占用地址空间为:" << sizeof(int*) << endl;
cout << "sizeof(double *)占用地址空间为:" << sizeof(double *) << endl;
cout << "sizeof(float *)占用地址空间为:" << sizeof(float *) << endl;
cout << "sizeof(char *)占用地址空间为:" << sizeof(char *) << endl;
x64系统就是64位
总结
提示:重要经验:
1)在32位操作系统下,指针是占4个字节空间大小
2)在64位操作系统下,指针是占8个字节空间大小
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。