char str[]="hello"; sizeof(str)=? char str[]="hello"; char *p=st...
char str[]=hello int a =sizeof(str); a\u7684\u503c\u662f()\u6807\u51c6\u5b57\u7b26\u4e32\u9690\u542b\u7740\u672b\u5c3e\u7684\u7ed3\u675f\u7b26\0\uff0c\u4ee5\u4e0a\u9898\u76ee\u7684\u7b54\u6848\u662fA 6
sizeof\uff08str\uff09=6 str\u662f\u6570\u7ec4\uff0csizeof\u5f97\u5230\u7684\u662f\u5b83\u7684\u5185\u5b58\u7a7a\u95f4\u5927\u5c0f\uff0chello\u4e32\u6709\u4e00\u4e2a\u7ed3\u675f\u7b26\uff0c\u51716\u4f4d
sizeof\uff08p\uff09=4 p\u662f\u6307\u9488\uff0c\u6240\u6709\u7684\u6307\u9488\u90fd\u5360\u56db\u5b57\u8282
因为除了hello这5个字节外,编译器还给加了'\0', 用来标志字符串的结束。
6
char类型每个字符占一个字节,加上系统默认字符串结束标记\0 共为6个字节。
你可以看一下谭浩强的c语言教材 说的很清楚。
扩展阅读:char str 10 china ... char s 6 s 3 ... char str 1234 ... char str abc ... char str good ... char str 括号里的数字 ... char strcpy ... char str 81 是什么意思 ... char str hello ...