先看一下的一段代码:
#include<stdio.h>
int main(void)
{
char c1[]={'c',' ','p','r','o','g','r','a','m'};
char c2[]={"C program"};
char c3[]="c program";
printf("c1=%d,c2=%d,c3=%d,char=%d\n",sizeof(c1),sizeof(c2),sizeof(c3),sizeof(char));
printf("%s\n",c1);
printf("%s\n",c2);
printf("%s\n",c3);
return 0;
}
数组c1是字符数组,大小是9字节,不包括字符串结束标志'\0',故printf("%s\n",c1);执行结果有点莫名其妙,实际是找不到字符串结束标志所致!
c2是用常量字符串来初始化字符数组,c3是c2的简写形式,他们都包含字符串结束标志'\0'.