各位能帮我看看这个C语言字符串中的\0问题吗?

char a[] = "Yes/No", *p = a;
*(p+4) = 0;
puts(p);

为什么输出时YES/

索引从0开始,给*(p+4)赋值为0,也就是第5个元素为0,正好作为结束标志(\0的ascii码就是0),所以最后是Yes/ 。

*(p+4) = 0; ==> a[4] = 'N' ==>a[4] = '\0'
puts(p); ==> a[] = "Yes/\0o " ==> Yes/