#include<stdio.h>
main()
{
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int *p;
for(p=a[0];p<a[0]+12;p++)
{if((p-a[0])%4==0)printf("\n");//p移动四次后换行
printf("%4d",*p);
}
printf("\n");
return 0;
}
我主要是对注释部分不明白啊,假设二维数组的0行0列的首地址为2000,则第一次循环p=2000,则当p++后则p内的地址就应该变成2000+4 =2004了(这里的加1不是代表4个字节吗),这样的话没有循环4次就应该换行了啊、、、 c语言初学者,求指点
我在谭浩强的教材上看到这样一段话,是否可以解释这个问题?如果指针变量p1和p2都指向同一个数组,如执行p2-p1,结果是p2-p1的值(两个地址只差)除以数组元素的长度。则当p++后变成2004.而p-a[0]结果不是4,而是4再除以4等于1.这样的话就是4次一换行了。
追答是的