/*需求:输出数组指定位置的元素
目的:练习二维数组和指向数组的指针
*/
#include <stdio.h>
int main()
{
int a[2][3]={12,12,3,32,22,45};
/*int *p;
p=a;//error C2440: '=' : cannot convert from 'int [2][3]' to 'int *'
*/
/*int *p[4];//指针数组,此数组中的四个元素全为指针
p=a;
*/
int (*p)[3];//指向含有三个元素的一维数组的指针
p=a;
for(int i=0;i<2;++i)
for(int j=0;j<3;++j)
printf("%3d",*(*(p+i)+j));
int display(int,int,int(*p)[3]);//√
//二维数组形参,指向数组的指针形参
//在二维数组中,数组名a是指向首行a[0]的指针,
//也就是说a=&a[0]; a[0]是指向首元素a[0][0]的指针,也就是说a[0]=&a[0][0]
display(0,2,p);//实际参数
/*
,将二维数组当作参数的时候,必须指明所有维数大小或者省略第一维的
但是不能省略第二维或者更高维的大小,这是由编译器原理限制的。大家在学编译原理
这么课程的时候知道编译器是这样处理数组的:
*/
return 0;
}
int display(int x,int y,int (*p)[3])//形式参数
{
//p=a;
printf("\na[%d,%d]=%d\n",x,y,*(*(p+x)+y));
return 0;
}
输出数组指定位置元素
最新推荐文章于 2023-06-04 23:21:32 发布