怎么做啊?不是很会字符为字符数组赋初值的字符串长度判断

img

p【】,中括号中没有值是表示不定长字符串,所以在读取时读不到结束符不会停止,所以不知道有多长
q[10],中括号中有10,表示申明时已经初始化为0了,然后再写入数据,没有填充数据的部分为‘\0’,所以长度可以确定为3

char p[] = {'a', 'b', 'c'}[]里的数组省略了,那么{}初始化列表里有多少个元素,数组就初始化那么大,这里相当于char p[3] = {'a', 'b', 'c'};,所以p结尾没有\0,因此长度不确定
q数组大小是10,初始化列表提供了3个字符,那么q初始化后前三个字符是abc,其余元素是0,因此字符串长度是3

字符串长度的判断原则是,从开始往后数,直到/0结束,p数组里面显然没有/0。
q数组虽然也只有三个元素,但是q数组比较大,三个元祖后面没有成员了,编译器可能给默认为0,也认为遇到/0结束了,这题不严谨,也可能默认不是0呢

哪个选项有疑问呢?
A由于没有写字符数组大小,所以数组大小是根据初始化内容确定大小的,初始化输入三个字符,数组大小就是3,没有字符串结束符
B定义了数组大小10,超过初始化的3个字符大小,后面的7个字符会默认初始化为0,即字符串结束符