为什么结果是52436
#include <string.h>
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char a[5];
a[0]='a';
a[1]='c';
a[2]='\0';
a[3]='a';
a[4]='b';
printf("%d\n",sizeof(a));
printf("%d\n",strlen(a));
printf("%d\n",sizeof("abc"));
printf("%d\n",strlen("abc\0d"));
printf("%d\n",sizeof("abc\0d"));
return 0;
}
å¦æè¿æ ·è¯´ï¼ä¸é¢çç¨åºæ´æ¬å°±ä¸æ¯é£æ ·åçï¼é£é½æ¯æç´æ¥æ¿å°vcä¸å¼äºçï¼é½å¯¹çå¢ï¼å¯æ¯ä½ 说ç解éä¸éåã
追çchar a[5];
a[0]='a';
a[1]='c';
a[2]='\0';
a[3]='a';
a[4]='b';
printf("%d\n",sizeof(a)); //aæ°ç»å®ä¹ç大å°ä¸º5ï¼æ以è¿ä¸ªå¼ä¸º5
printf("%d\n",strlen(a)); //åªè¾åº\0åçå符个æ°ï¼å³a[0]a[1]两个ï¼å¼ä¸º2
printf("%d\n",sizeof("abc")); //abcå¨å表示为abc\0ï¼ç±äºæ¯sizeofï¼ä¸ç®¡\0åªçå ç¨ç©ºé´ï¼4åè
printf("%d\n",strlen("abc\0d"));//strlen读å\0åçå符个æ°abc3个ï¼å¼ä¸º3
printf("%d\n",sizeof("abc\0d"));//å¨å表示为'a''b''c''\0''d''\0'ï¼å
±6个ï¼å¼ä¸º6
注æï¼æ¯ä¸ªå¸¦åå¼å·çå符串åé½æä¸ä¸ªå符串ç»æ符\0ï¼âcâå ç¨ä¸åèï¼èâcâå ç¨ä¸¤åèï¼cå\0ï¼
解éå®å
¨æç«ï¼
åé®ä¸ï¼é£è¿ä¸ªä¸ºä»ä¹æ¯7å¢ã
void main()
{printf("%d",sizeof("china\0"));}为ä»ä¹è¿ä¸ªåæ¯7å¢
如果这样说,上面的程序更本就不是那样子的,那都是我直接拿到vc上弄了的,都对着呢,可是你说的解释不通啊。
追答你如果直接sizeof(“abc\0d”)这样的话,就会认为有a,b,c,\,0,d这6个字符,一个字符占一个字节。你考虑考虑吧。\0在这里面是分开的,不是代表字符串的结束符。
什么啊。
void main()
{printf("%d",sizeof("china\0"));}为什么这个又是7呢
告诉我这是干什么的
追问我提问问题你不是回答了么,我就问一下,看你知道不知道。