#include<stdio.h>
#include<stdlib.h>
第一种情况:
int main()
{
char a[]={'I','','a','m','', 'a','', 'b','o','y'};
char b[]={"I am a boy"};
printf("%d %d\n",sizeof(a),sizeof(b));
system("pause");
return 0;
}
第一种情况编译会出错,编译器提示:empty character constant. 这是因为当字符常量为空格字符时,不能只输入两个单引号'',还必须在两个单引号之间输入一个空格。
更正见第二种情况。
第二种情况:
#include<stdio.h>
#include<stdlib.h>
int main()
{
char a[]={'I',' ','a','m',' ', 'a',' ', 'b','o','y'};
char b[]={"I am a boy"};
printf("%d %d\n",sizeof(a),sizeof(b));
system("pause");
return 0;
}
运行结果:
10 11
Press any key to continue . . .
由运行结果可知,采用char a[]={'I',' ','a','m',' ', 'a',' ', 'b','o','y'}; 这种方式为字符数组赋初值时,编译器不会自动添加结束标志。
采用char b[]={"I am a boy"}; 这种方式为字符数组赋初值时,编译器会自动添加结束标志。