知识点:学会通过指针引用多维数组
多维数组的地址:
*(*(a+i)+j)与*(a[i]+j)是等价的,都是a[i][j]的值
*(a+i)+j与a[i]+j是等价的,都是a[i][j]的地址
二维数组a的有关指针
表格形式 含义 a 二维数组名,指向一位数组a[0],即0行起始地址 a[0],*(a+0),*a0行0列元素地址
a+1,&a[1]
1行起始地址
a[1],*(a+1)
1行0列元素a[1][0]的地址
a[1]+2,*(a+1)+2,&a[1][2]
1行2列元素a[1][2]的地址
*(a[1]+2),*(*(a+1)+2),a[1][2] 1行2列元素a[1][2]的值
代码如下
#include<stdio.h>
#include<windows.h>
void dmax(int(*p)[3])
{
int i, j, max = 0,m=0,n=0;
max = (*p)[0];
for (i = 0; i < 2; i++)
{
for (j = 0; j < 3; j++)
{
if (max < *(*(p + i) + j))
{
max = *(*(p + i) + j);
m = i;
n = j;
}
}
}
printf("max=%d 下标为:%d %d\n", max, m, n);
}
void dmin(int(*q)[3])
{
int min = 0, i, j, n=0, m=0;
min = (*q)[0];
for (i = 0; i < 2; i++)
{
for (j = 0; j < 3; j++)
{
if (min > *(*(q + i) + j))
{
min = *(*(q + i) + j);
m = i;
n = j;
}
}
}
printf("min=%d 下标为:%d %d\n", min, m, n);
}
int main()
{
int a[2][3] = { { 5, 4, 6 }, { 7, 3, 2 }};
dmax(a);
dmin(a);
system("pause");
return 0;
}
输出结果