关于指针的一个问题,高手指点:
#include <stdio.h>main()
{int a[2][3]={1,2,3,4,5,6};
int *p1,(*p2)[3];
p1=a[0];
for (;p1<a[0]+6;p1++)
printf("%4d",*p1);
printf("\n");
p2=a;
for(;p2<a+2;p2++)
printf("%4d",*(*p2));
}
结果是显示
1 2 3 4 5 6
1 4
以上程序是书中的一个例题,使用不同指针类型定位一个二维数组,第一个循环中的p1<a[0]+6结束循环自己能理解,但下面的p2<a+2结束循环无法理解,(我是这么理解:循环开始时,P2指向a[0][0],那p2肯定小于a+2,所以应该退出循环,怎么会显示出1,尔后自加后指向a[1][0],同样条件不符合,也不该显示4的啊)
望高手指点!!!多谢