viod main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p;
for(p=a[0];p<a[0]+12;p++)
{
if((p-a[0])%4==0)
printf("\n");
printf("%4d",*p);
}
printf("\n");
}
不是很懂
for(p=a[0];p<a[0]+12;p++)
{
if((p-a[0])%4==0)
printf("\n");
printf("%4d",*p);
什么意思 ! 求大侠教我.
if((p-a[0])%4==0)
printf("\n");
printf("%4d",*p);
大侠,主要是解释哈这里!
if((p-a[0])%4==0)printf("\n");就是一行输出满四个元素就换行,一步步看:①p初始值为a[0],(a[0]-a[0])%4==0(%求余你应该懂得把),故会先输出一个换行符。②接着p变为a[0]+1;(a[0]+1]-a[0])%4==1(!=0),所以不执行if后面的语句,不输出换行,直接执行printf("%4d",*p);
printf("%4d",*p);输出此时p所是指向的元素,p每次都自加1,指向下一个元素③继续,p变为a[0]+2,(a[0]+2-a[0])%4==2,同步骤二④直到p变为a[0]+4,(a[0]+4-a[0])%4==0,再次输出换行。。。。。。依此类推,汗!还以为你问指针的问题,这个换行很好理解的
为什么输出这样?
追答if((p-a[0])%4==0)
//关键在这儿,p=a[0]时,条件满足,输出一个空行。
p=a[4]时,条件满足,换行。
p=a[8]时,条件满足,换行。
谢谢,大侠。明白一些了!
追答明白了就应该推佳!