这个输出为什么是you&me 不懂 给解释一下 为什么输出的是ch[0]而把ch[1]也输出了呢?

#include<stdio.h>
#include<string.h>
int main(){
char ch[2][4];
strcpy(ch[0],"you");
strcpy(ch[1],"me");
ch[0][3]='&';
printf("%s\n",ch[0]);

}

简单来说吧:
①你写ch[0],通过%s,就把第一行的内容全输出来了,此时为you&
②因为此时仍没遇到'\0',字符串并未终止输出,继续就把ch[1]也输出了。所以输出的就是you&me了。

希望对题主有所帮助,可以的话,帮忙点个采纳!

因为你用%s输出时输出字符串。原本数组第一行最后一个字符是字符串结束符'\0',但由于ch[0][3] = '&',把这个'\0'改成了'&',所以字符串会一直输出到整个二位数组内容

供参考:

#include<stdio.h>
#include<string.h>
int main(){
    char ch[2][4];
    strcpy(ch[0],"you");//ch[0][0]='y',ch[0][1]='o',ch[0][2]='u',ch[0][3]='\0'
    strcpy(ch[1],"me"); //ch[1][0]='m',ch[1][1]='e',ch[1][2]='\0'
    ch[0][3]='&';       //ch[0][3]='&';
    printf("%s\n",ch[0]);//%s输出字符串,直到碰到 '\0' 结束符停止。you&me\0

}