一 数组指针的介绍:
数组指针的本质是一个指针;
数据类型 (*变量名)[列宽];
它一般用于指向二维数组;
数组指针访问二维数组的每个元素:
数组名[row][col] <==>数组指针变量名[row][col] <==> *(*(数组指针名 + row)+col);
数组指针访问二维数组的每个元素的地址:
&数组名[row][col] <==>数组指针变量名[row]+col<==> *(数组指针名 + row)+col;
数组指针访问二位数组的每行的首地址:
数组指针变量名[row]<==> *(数组指针名 + row)
数组指针访问二位数组的行地址:
数组指针变量名 + row
二 数组指针对二维数组的两种遍历:
#include<stdio.h>
// 数组指针变量名遍历
void printf_arr(int(*a)[4],int row ,int col);
// *(*(数组指针名+row)+col)遍历
void printf_aww(int(*a)[4],int row ,int col);
int main(int argc, const char *argv[])
{
int arr[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
printf_arr(arr,3,4);
printf_aww(arr,3,4);
return 0;
}
void printf_arr(int(*a)[4],int row ,int col){
for(int i = 0; i < row;i++){
for(int j = 0; j < col;j++){
printf("%d\t",a[i][j]);
}
puts("");
}
puts("**********************");
}
void printf_aww(int(*a)[4],int row ,int col){
for(int i = 0; i < row;i++){
for(int j = 0; j < col;j++){
printf("%d\t",*(*(a+i)+j));
}
puts("");
}
puts("**********************");
}
三 实现结果:
![](https://i-blog.csdnimg.cn/blog_migrate/20df0b315f8e3e258d1b96afaafd2ecb.png)