求sizeof(p) char *p=”hello!”; char p[]=”hello!”; void *p=malloc(100); 求解 急啊 考试呢。。。。

谢谢各位了。。。。

1、char *p="hello!";
那么sizeof(p) =4。因为p是指针。指针一般在32位系统占用4字节。
2、 char p[]="hello!";
那么sizeof(p) =7。因为p是字符数组。是连续的空间包含字符结束符'\0'共7个字节。
3、void *p=malloc(100);
那么sizeof(p) =4。因为p是指针。指针一般在32位系统占用4字节。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-31
char *p=”hello!”;
void *p=malloc(100);
的话,结果一样,sizeof(p) 都是4(VC6下的话,TC的话是2)

char p[]=”hello!”;
的话,结果一样,sizeof(p)是7追问

保吗 哥们 事关生死啊。。。

追答

等一下,hello前有没有空格
有空格的话,再加1,也就是8

char *p=”hello!”;
void *p=malloc(100);
的话,没有错,最要看你考试对应的是什么样的编译器

追问

没空格 我 GCC编译器

追答

那就是7,肯定的了

至于其他两个,还要看你考试对应的编译器

话说现在考试也不容易啊
叹,过几天我也要考试啊,工程数学,伤不起啊~~~~

GCC的话,那另外的两个应该是4,没错了

本回答被提问者采纳
第2个回答  2011-12-31
第一和第三个,p是指针,所以大小肯定是4
第二个p是数组,hello!加上前面的空格一共是7个字节,再加上隐藏的字符串结束符,一共8个字节。所以大小是8
第3个回答  2011-12-31
char *p=”hello!”; //sizeof(p) =4
char p[]=”hello!”; //sizeof(p) =7
void *p=malloc(100);// sizeof(p) =4

程序实际确认结果,肯定对
#include <stdio.h>
#include <malloc.h>
int main(){
//char *p="hello!";
//char p[]="hello!";
void *p=malloc(100);
printf("%d",sizeof(p));
}
第4个回答  2011-12-31
第一个答案是4,指针固定大小为4
第二个为7,静态数组的大小
第三个sizeof操作符不能返回动态开辟的数组或形参数组的大小。
相似回答