char b[]="hello world";printf("%d\n",sizeof(b+8));
答案:2 悬赏:30 手机版
解决时间 2021-04-03 08:00
- 提问者网友:未信
- 2021-04-02 17:55
char b[]="hello world";printf("%d\n",sizeof(b+8));
最佳答案
- 五星知识达人网友:夜风逐马
- 2021-04-02 18:07
等于4
sizeof是编译预处理命令,根据括号里的类型给出大小,b+8被编译器认为是char* ,VC
中char* 占4个字节,如果在TC中,char*占2个字节或4个字节,因为dos年代有近指针和远指针(near char* , far char*)
sizeof是编译预处理命令,根据括号里的类型给出大小,b+8被编译器认为是char* ,VC
中char* 占4个字节,如果在TC中,char*占2个字节或4个字节,因为dos年代有近指针和远指针(near char* , far char*)
全部回答
- 1楼网友:深街酒徒
- 2021-04-02 19:38
char b[]="hello world";
相当于
char b[12]= {'h','e','l','l','o',' ','w','o','r','l','d',''};
他的长度是12,因为末尾还有个''字符
b+8=&b[8]也就是第9个元素的地址
b[8] --b[9]--b[10]--b[11]
地址 b+8
所以从这个地址开始,应该还有四个元素,4个char当然是占4个字节
所以最后输出sizeof(b+8)是4,
追问但是printf("%d\n",sizeof(b+5));也会是4的哦追答唉呀,我想错了,他是直接当成char*来处理的
实际上相当于 sizeof(char *)
所以除了b之外,不管什么都是 4
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯