1.
#include<stdio.h>
main()
{
int a[][5]={0,1,2,3,4,5,6};
puts("int a[][5]={0,1,2,3,4,5,6};");
putchar('\n');
puts("二维数组的地址(二维数组首个元素的地址:)");
printf("a:%d\n",a);
printf("*a:%d\n",*a);
printf("a[0]:%d\n",a[0]);
printf("&a[0]:%d\n",&a[0]);
printf("&a[0][0]:%d\n",&a[0][0]);
puts("二维数组的第二行第一列的地址");
printf("a+1:%d\n",a+1);
printf("*(a+1):%d\n",*(a+1));
printf("a[1]:%d\n",a[1]);
printf("&a[1]:%d\n",&a[1]);
printf("&a[1][0]:%d\n",&a[1][0]);
puts("略");
printf("a+2:%d\n",a+2);
printf("*(a+2):%d\n",*(a+2));
printf("a[2]:%d\n",a[2]);
printf("&a[2][0]:%d\n",&a[2][0]);
puts("略略");
printf("a[1]+1:%d\n",a[1]+1);
printf("*(a+1)+1:%d\n",*(a+1)+1);
puts("略略略");
printf("*(a[1]+1):%d\n",*(a[1]+1));
printf("*(*(a+1)+1):%d\n",*(*(a+1)+1));
}
start without debugging
2.二维数组指针定义
#include<stdio.h>
main()
{
int a[][4]={0,1,2,3,4,5,6};//二维数组定义
int (*p)[4];//二维数组指针定义(每个地址4个元素)
int i,j;
p=a;
for (i=0;i<3;i++)//假设i为行
{
for(j=0;j<4;j++)//假设j为列
{
printf("%2d ",*(*(p+i)+j));//输出元素
}
putchar('\n');
}
}
start without debugging
3.输出二维数组指定位置元素
#include<stdio.h>
main()
{
int a[][4]={0,1,2,3,4,5,6};
int (*p)[4];
int i,j;
p=a;
printf("行号 i= ");
scanf("%d",&i);
while(i>1||i<0) {printf("行号 i= "); scanf("%d",&i);}
printf("列号 j= ");
scanf("%d",&j);
while(j>3||j<0) {printf("行号 j= "); scanf("%d",&j);}
printf("a[%d,%d]=%d",i,j,*(*(p+i)+j));
}
start without debugging