char a[]={'a','b','c','d'};char b[]="abcd";我查资料说两个的区别时上面一个是长度为4,下面一个长度为5,因为下面那个还有一个表示结束的'\0',但是我用了两个不同的C语言编程工具得到的结果都不是这样,使用strlen求b的长度的时候竟然是8更离谱的是我要输出整个b的时候,它不但输出了整个b,还在后面跟上了整个a
这二种初始化方式的区别在于第一种方法是存储了5个字节的内容,即能看到的个字母,外加一个字符串结束符'\0'。这样才能正确地以%s的形式来输出这个字符串;而第二种方法则是只存储了4个字母,但是却没有字符串结束符,所以它不能以%s的形式正确输出。如果也要以%s的形式输出这个字符串,那就应该在末尾增加一个字节,用来存储一个字符串结束符'\0'。
strlen和printf中的%s都是以字符串结束符'\0'作为结束标志的
而逼的数组b定义时没有多复制一个字符串结束符,导致数组越界访问,直至遇到'\0'采集结束输出/判断字符串长度