C语言 viod main() { int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};....}

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);
什么意思 ! 求大侠教我.

首先对一楼的表示无语,讲了等于没讲
void 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++)//a[0]指向第0行第0个元素,即1
{ //a[0]+1就是指向下一个元素,即3。那么+11就是指向最后一个元素23
if((p-a[0])%4==0)
printf("\n");
printf("%4d",*p);
}
printf("\n");
//以下为校验
printf("*a[0]=%d\n",*a[0]);
printf("a[0]=%d\n",a[0]); //和下面一行地址是一样的
printf("&a[0][0]=%d\n",&a[0][0]);

printf("a=%d\n",a);//以下三行解释在最后
printf("*a=%d\n",*a);
printf("**a=%d\n",**a);
}
/*当然这里面还有涉及到指向行的指针,比如a(指向第0行的首地址,
注意不是第0行第0个元素,虽然输出的地址值是一样的,但意义不同)。
如果是指向行的,那么+1,比如a+1,就是指向下一行的首地址(首地址
和该行第一个元素地址虽然是一样的,但意义不同,希望你理解这点),
而且你此时加“*”也不是访问到该行第0个元素,而还是地址(详见
printf("*a=%d\n",*a);),*a才是指向一个确定的元素(即1),此时
再加一个“*”,输出才是1(printf("**a=%d\n",**a);)。
而当指针指向一个确定的元素,比如a[0],那么此时+1(a[0]+1)就
是指向下一个元素了,即指向3这个数值。
指针+数组这里面有很多内容,指针是C的精华,兄弟你还是静下心
来多看看书,这不是一两句话能讲清楚的,希望我上面讲的对你有所帮助*/追问

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,再次输出换行。。。。。。依此类推,汗!还以为你问指针的问题,这个换行很好理解的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-19
先说说i,j的值
i=0.j=0
i=0,j=1
i=1,j=0
i=1,j=1

第一组:
k=k+*(*(p+i)+j)
第二组:
k=k+*(*(p+i)+j) 注意k的值已变化
第三组:
k=k+*(*(p+i)+j) 注意k的值已变化
第四组:
k=k+*(*(p+i)+j) 注意k的值已变化

一时忘记怎么算(*p)[4]=a,i,j,k=0; 这个了

套用一下就可以了
第2个回答  2011-05-16
每输出4个进行换行,p刚开始指向a[0],当p每后移4个后输出换行。
第3个回答  推荐于2017-10-20
就是从a[0][0]开始,输出a数组的12个元素。

每行输出4个。本回答被网友采纳
第4个回答  2011-05-16
for(p=a[0];p<a[0]+12;p++) //循环执行12次;
{
if((p-a[0])%4==0) //每输出个数就执行下一行,目的是换行。
printf("\n");
printf("%4d",*p);//输出数组元素
}追问

为什么输出这样?

追答

if((p-a[0])%4==0)
//关键在这儿,p=a[0]时,条件满足,输出一个空行。
p=a[4]时,条件满足,换行。
p=a[8]时,条件满足,换行。

追问

谢谢,大侠。明白一些了!

追答

明白了就应该推佳!

相似回答