1 指针和二维数组
#include <stdio.h>
int main() {
int i, j;
int arr[2][3] = {{1, 2, 3},{4, 5, 6},};
for(i = 0; i < 2; i++) {
for(j = 0; j < 3; j++) {
printf("%d\t", arr[i][j]); //方式一
printf("%d\t", *(arr[i] + j)); //方式二
printf("%d\t", *(*(arr + i) + j)); //方式三 *(arr + i) = arr[i]
}
printf("\n");
}
return 0;
}
二维数组在定义的时候
int array[][];
必须要声明单个数组的长度
int arra[][n];
2 二维数组做函数的参数
2.1 方法一
void fun(int arr[2][2]);
2.2 方法二
void fun(int arr[][2]);
- 在二维大小相同的前提下,一维的大小可以不同,如
int a[5][10]; // 实参数组
int func(int a[5][10]); // 方法一
int func(int a[][10]); // 方法二
int func(int a[8][10]); // 一维可以不同,C语言编译器系统不检查一维大小
2.3 方法三
void fun(int (*p)[2]); // 数组指针
*(p+n)+i
是[n][i]
的地址*(*(p+n)+i)
是[n][i]
的值