c语言中char str1[10]=' ';编译时是不能通过的。因为一个10个元素的字符数组,不能只给它赋值一个元素。
可以通过的是:
char str1[10]={' '};或
char str1[10]=" ";
这二种写法的结果是相同的。即:定义一个有10个元素的字符数组,并初始化,首字节为一个空格字符,后面的9个元素值为空字符('\0')。
这应该是非法的吧,我在VC6.0上试了,这样不行,单引号是给单个字符进行赋值的,如果改成:
char str1[10]=" "是可以的,但是这表示只是给str1[0]赋值了,其他的还没有初始化。
不可以。
规范的初始化写法为
char str1[10]="xxxx";
左边的str1是数组名,也是数组的头地址。右边的"xxxx"是字符串常量,也是一个地址。
等式两边都是地址,合情合理。
如果写成
char str1[10]=' ';
左边是地址,右边是字符(其实就是int),类型不匹配,编译都要报错的。
不规范!
正确的做法是
1. char str[10] = "sss"; // 初始化的时候,编译器会自动在字符串最后加上 '\0'表示结束标志!
2. char str[10];
for (int i = 0; i < 10; i++)
str[i] = 0;
【注】's' 输入char型,其实也是int型,是无法给char数组初始化的 。。。编译会报错!
意思是定义了名为str0,str1,str2和str3的四个数组,并且数组中的元素数据类型为char型(即字符型)。[]里为数组长度,即这个数组中有多少个元素,str0,