1 .用字符串常数初始化,但不指定长度由编译器计算。 例如:
char str4[]='Hello world!' ; 此赋值方式会自动添加“ 0”
2 .直接给出字符数组中的每个字符
char str1[5]={'a '、' b '、' c '、' d '、' e'}; 3 .直接为字符数组指定值,但不指定长度。 例如:
char str2[]={'I ',' a ',' m ',',' f ',' I ',' n ',' e'}2.3对于这三种类型,末尾不会自动添加“ 0”
例题:
char a[]='abcd ',*p=a; printf('%d ',* ) p4 );
的执行结果为0
由于*(p4 )=a[4],该问题用字符串常量初始化,但如果不指定长度,且满足1种类型,“ 0”将自动完成,“ 0”的acsii值为0
修改为类型2.3时
图:
注意到越界了,也就是说超出了范围,没有补充0
最重要的是还不会报错,c语言编译器不会检查数组边界,如果在引用时出现了下标越界,那么编译时不会给出错误提示,只是在运行时出错。