- 除了两种特殊情况外,都是指向第一个一维数组的指针
- 两种特殊情况
- sizeof 统计整个二维数组长度
- 对数组名称取地址 int(*p2)[3][3] = &arr;
void test01() { //可读性高 int arr[3][3] = { {1,2,3}, {4,5,6}, {7,8,9} }; //int arr2[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; //int arr3[][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int(*p)[3] = arr; //二维数组名称 指向 第一个一维数组的指针 //特殊情况 printf("sizeof arr = %d\n", sizeof(arr)); //统计二维数组长度 int(*p2)[3][3] = &arr; // 对数组名取地址 二维数组指针变量 //访问二维数组中的6 printf("%d\n", arr[1][2]); //给人看 printf("%d\n", *(*(arr + 1) + 2)); //给机器 }
- 二维数组做函数参数传递方式
- void printArray( int p[][3] , int row, int col)
- void printArray(int p[3][3], int row, int col) 可读性高
- void printArray( int(*p)[3] , int row ,int col)
//void printArray( int p[][3] , int row, int col) void printArray(int p[3][3], int row, int col) //void printArray( int(*p)[3] , int row ,int col) { for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { //printf("%d ", p[i][j]); printf("%d ", *(*(p + i) + j)); } printf("\n"); } }
void test02() { int arr[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; printArray(arr, 3, 3); }
- 数组指针 指针数组 区别
- 数组指针 是一个指向数组的指针 int (*p)[10];
- 指针数组 是一个存放指针的数组 int * p[10];
二维数组名称
最新推荐文章于 2022-07-20 21:30:40 发布