一、
除了倒数第二个sizeof
其他都是两个字节,第一个位置分别存了
①0(是字符不等价于'\0') 说明了无论""里面是什么,结尾都会加'\0'但是注意在下面那种字符串里该斜杠零会起作用,0 不会,0会输出
②\ 体现了转义字符是连起来算一个
③0(等价于'\0')
④空格 第二个位置都为'\0'
倒数第二个sizeof说明该字符串为空串(只有'\0')等价于char a[10]={0};(这里是数字0等价于'\0')
二、
最下面两个printf说明了直接输出的时候是以字符形式输出
而且\055这种是认为八进制数代表的字符而不是\0加字符55
而\0955表示\0加字符955,因为八进制数里面不包括8及其以上的数
三、
1.为什么char a[5]="abcde";不报错:有些C系统认为刚刚可以把有效内容放入,就不报错。
2.当不作为字符串使用时(即仅作为字符数组):可以输入的内容长度等于
最大空间,即不给出'\0'位置。但是如果不小心将其作为字符串输出时可能有误(因为没有'\0'结尾)故最好给'\0'预留位置。
3.作为字符串使用时,或者字符串形式初始化时(char a[5]=""这种形式)必须小于最大的空间:不给'\0'留位置算错(但不一定报错原因见1),因为没有结束标志。
若有错,请指正。