首页 > 试题广场 >

以下代码打印出的是:[$##$] char *p = n

[填空题]
以下代码打印出的是:1
char *p = new char[10]; 
printf("%d\n", sizeof(p)); 

不应该要考虑全面  32 64 位系统
发表于 2020-08-01 10:14:36 回复(2)
char *p = new char[10]是一个指向10个char的指针,p+1与p的差了10个char的地址空间,sizeof(p)=4或8(取决于机器的位数)
char p[10]是p数组,p+1与p差了一个char,sizeof(p)=10(对数组名使用sizeof函数是求数组长度乘以数据类型字节数),sizeof(*p)=1(p指向地址数据类型的字节数)
编辑于 2018-11-30 15:17:47 回复(3)
32位系统下,指针都是占用4个字节
发表于 2019-09-25 16:23:56 回复(0)
****64和32位都不给我做个锤子
发表于 2021-03-06 14:42:26 回复(0)
本道题的题意缺少条件,sizeof(p)是求的指针的大小,如果是32位系统则为4字节,如果是64位系统则为8字节
发表于 2021-06-04 10:46:30 回复(0)
答案仅限32位系统下,具体看MMU的地址宽度
发表于 2022-03-09 18:28:03 回复(0)