C语言 这两个结果有什么不同,为什么

来源:百度知道 编辑:UC知道 时间:2024/09/21 13:41:59
(1)
void main()
{
char a[]={'a','b','c'};
printf("%s",a);
}
(2)
void main()
{
char b[]="abc";
printf("%s",b);
}
详细解释一下好吗

字符串的结束标志为'\0'
也就是说输出字符串的时候没有遇见'\0'结束就会出现错误
第一种形式不会自动添加'\0'
而第二种形式会自动添加'\0'

故结果不同
:)

两个的结果均是abc,第一个是char数组,3个元素,第二为数组型字符串以\0为结尾所以是4个元素。
可以运行下面的看看
#include<stdio.h>
int main()
{
char a[]={'a','b','c'};
printf("%s\t",a);
printf("a的元素个数为%d\n",sizeof(a));

char b[]="abc";
printf("%s\t",b);
printf("b的元素个数为%d\n",sizeof(b));

return 0;
}

第一个没有空字符 维数是3
而第二个有空字符 null 维数是4