二维数组的3种参数形式
第一种形式:int arr[3][3]
void PrintArray01(int arr[3][3]){ for (int i = 0; i < 3; i++){ for (int j = 0; j < 3; j++){ printf("arr[%d][%d]:%d\n", i, j, arr[i][j]); } } }
第二种形式:int arr[][3]
void PrintArray02(int arr[][3]){ for (int i = 0; i < 3; i++){ for (int j = 0; j < 3; j++){ printf("arr[%d][%d]:%d\n", i, j, arr[i][j]); } } }
第三种形式:int(*arr)[3]
数组指针的形式
void PrintArray03(int(*arr)[3]){ for (int i = 0; i < 3; i++){ for (int j = 0; j < 3; j++){ printf("arr[%d][%d]:%d\n", i, j, arr[i][j]); } } }
案例代码
#include<stdio.h> #include<stdlib.h> #include<string.h> // 形式参数:第一种形式 void PrintArray01(int arr[3][3]) { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { printf("arr[%d][%d]:%d\n", i, j, arr[i][j]); } } arr[0][0] = 1111; } // 形式参数:第二种形式 void PrintArray02(int arr[][3]) { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { printf("arr[%d][%d]:%d\n", i, j, arr[i][j]); } } arr[0][0] = 2222; } // 形式参数:第三种形式 void PrintArray03(int(*arr)[3]) { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { printf("arr[%d][%d]:%d\n", i, j, arr[i][j]); } } arr[0][0] = 3333; } // 实际参数 void PrintArray04(int** arr) { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { printf("arr[%d][%d]:%d\n", i, j, arr[i][j]); } } arr[0][0] = 4444; } void test() { int arr[][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; printf("第一种:\n"); PrintArray01(arr); printf("arr[0][0] = %d\n", arr[0][0]); printf("第二种:\n"); PrintArray02(arr); printf("arr[0][0] = %d\n", arr[0][0]); printf("第三种:\n"); PrintArray03(arr); printf("arr[0][0] = %d\n", arr[0][0]); } int main() { test(); return 0; }
