c简单概念问题请教

来源:百度知道 编辑:UC知道 时间:2024/06/22 02:43:45
看到别人的提问,我正好也不清楚,请教一下
char ch[]="abc",x[3][4];
int i,j;
for(i=0;i<3;i++)strcpy(x[i],ch);与
char ch[]="abc",x[3][3];
int i,j;
for(i=0;i<3;i++)strcpy(x[i],ch);
结果有什么不一样啊?按理说x[3][3]中的x[i]不能存放一个"abc"啊?应该有他的一个结束符,对吧,我概念也不清楚,问问
来人啊

x[3][3]中的x[i]不能存放一个"abc",无法存放它的结束符号
所以,再strcpy(x[i],ch);的话,结束符的存放 会越界的。

这个问题就搞笑了,你如果不用4个成员来储存的话,表面看上去没什么区别,只是最后少了一个‘\0’,但是,如果你输出时写x[1],在写到x[1][2]的时候(这时候输出了3个字符abc)程序并不会停止,因为没收到‘\0’。它会继续输出直到x[2][2]。

如果用4个成员存下‘\0’,到x[1][2]的时候就会停下了,因为x[1][3]是一个结束符号

char ch[]="abc";

初学一定要多看书,这是最基本的知识。

这个还真不太清楚,应该是‘\0’可以不放进数组吧