为啥我在电脑上弄只有c不可以,而答案是d

img

因为字符串的的最后需要有终结符,A、B都需要6个区间(我忘了术语是什么了)才能做到正确输出,c的话指针不能同时代表6个字符,D则直接指向字符串可以输出。
现在编译器容错率很高,AB估计会自动修复?
你可以去看看编译原理中的词法分析那一章,你就知道为什么要有终结符了
我主修JAVA,c不是很熟悉,不能做到更深入的讲解了

C和C++字符串的最后都需要有’\0‘结束符,否则会不能检测字符串结束,产生不可预料的情况,也就是说字符串字节数是字符串长度+1。字符串越界后刚好后面为'\0'也会当成字符串终止,但是会发生越界本身就是不对的。