二维数组的单循环输出
定义不同的指针变量时,二维数组的输出,严防越界!
/*
*copyright(c) 2018,HH
*All rights reserved.
*作 者:HH
*完成日期:2018年7月25日
*版本号:v1.0
*
*问题描:二维数组的单循环输出,严防数组元素越界!!!
*输入描述:;
*程序输出:
*/
#include <stdio.h>
int main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int *p1,*p2,*p3;
p1=a;//此种定义,严防数组越界!!!!
p2=*a;
p3=a[0];
printf("p1=a的地址是:%d,值是:%d\n",p1,*p1);
printf("p2=*a的地址是:%d,值是:%d\n",p2,*p2);
printf("p3=a[0]的地址是:%d,值是:%d\n",p3,*p3);
for(p1=a;p1<a+6;p1++)//重点:a+6代表数组a的第6行,因此在a+3时,数组已经出现了越界!!!
{
printf("%d ",*p1);//不正常输出,第0行到第5行,共计6行,18个值,72个字节,地址2686716~2686788
}
printf("\n");
for(p1=a;p1<a+2;p1++)//修改后,仅输出第0行,第1行时,输出正常,不会发生越界!!
{
printf("%d ",*p1);//正常输出
}
printf("\n");
for(p2=*a;p2<*a+6;p2++)//同样的当p2<*a+7时,也会出现一个越界的元素!
{
printf("%d ",*p2);//正常输出,6个值,24字节,地址2686716~2686740
}
printf("\n");
for(p3=a[0];p3<a[0]+6;p3++)//同样的当p3<a[0]+7时,也会出现一个越界的元素!
{
printf("%d ",*p3);//正常输出,6个值,24字节,地址2686716~2686740
}
printf("\n");
return 0;
}