char 不是占用一个字节,int 两个字节,double四个字节码,为什么答案是4,4,4啊?

1个月前

#include <stdio.h>

main() 

{

char* p1 = 0;

int* p2 = 0;

double* p3 = 0;

printf("%d,%d,%d\n", sizeof(p1), sizeof(p2), sizeof(p3));

}


https://m.teaku.com/20/1581736900218491.html

网友评论

  • 这里你就要考虑到sizeof()的指针用法

    指针是用来记录另一个对象的地址,所以指针的内存大小当然就等于计算机内部地址总线的宽度。

    在32位计算机中,一个指针变量的返回值必定是4。指针变量的sizeof值与指针所指的对象没有任何关系,所以不管是什么类型,都是4

    你看,我又加了一个float()类型的指针,也是4

    如果你把*去掉,即不用指针,如下图

    这个是正确的。

    而且,我在稍微扩展一下:

    还有问题吗,谢谢采纳,Thanks♪(・ω・)ノ