内存里是部分覆盖了,你看以在查看内存看看。输出XYZ我认为是因为puts(a);这样之输出一个字符串;覆盖后数组a的前三个字节是XYZ,第四字节是结束标志\0;第五字节开始是dfg,所以你写puts(&(a[4])); 就可以输出dfg