#include<stdio.h> int main() { char p[4]={'a','b','c'},b[3]="abc"; printf("

#include<stdio.h>
int main()
{
char p[3]={'a','b','c'},b[4]="abc";
printf("%s,%s\n",p,b);
}
请问这个程序,用sizeof调出来的结果是3,4,但是必须都要把长度定为4才可以准确输出abc,我想问的是\0这个是在p和b的数组里都会由系统自动添加吗,哪一个的数据内容必须必场长度少1,还是都要?

要理解二个概念,一个是sizeof这是内存大小, strlen 字符串长度。

系统会给字符串自动加0.所以数据大小就是+1.
也就是算。
sizeof >= strlen+1
温馨提示:答案为网友推荐,仅供参考
相似回答