C程序的问题,来看看这是怎么了

来源:百度知道 编辑:UC知道 时间:2024/06/16 16:35:17
#include<stdio.h>
void main()
{
char (*p)[20],a[3][20];
for(p=a;p<a+3;p++)
gets(*p);
p=p+2; //为什么这条语句不起作用?按理说应该p和p+2是一样的呀

p=a;
printf("%s,%s,%s",p,p+1,p+2);
}
后来修改了,在循环后面把p自减3,p=a也不用了,可还是有错误。让p指向p+2所指向的语句应该怎么弄

#include<stdio.h>
void main()
{
char (*p)[20],a[3][20];
for(p = a; p < a+3;p++)
gets(*p);

p=p+2; //这句话起了做用啊,使得p指向a的第三字符串啊, //为什么这条语句不起作用?按理说应该p和p+2是一样的呀

p=a; //但是你这里又改变了p的指向,使得p还是指向a的第一个字符串啊

printf("%s,%s,%s",p,p+1,p+2);
}

在这个FOR循环语句结束后,这个P=a+3,然后你又使P=P+2,这时你想想,这个P就是a+5了,a这个二维数组只有三行,你有弄上这个P=a,真不知道你要干嘛