C语言二维数组作为函数参数传参示例

C语言学习示例:二维数组传参

这里的实参为一个整形二维数组,分别以二维数组,数组指针和二级指针作为形参传递给函数,并输出二维数组各个元素的值。

 

 1 #include <stdio.h>
 2 
 3 // 固定长度的二维数组
 4 void print1(int arr[3][5], int r, int c)
 5 {
 6     int i = 0;
 7     printf("1.固定长度二维数组传参\n");
 8     for (i = 0; i < r; i++) {
 9         int j = 0;
10         for (j = 0; j < c; j++) {
11             printf("%d ", arr[i][j]);
12         }
13         printf("\n");
14     }
15 }
16 
17 // 数组指针
18 void print2(int (*p)[5], int r, int c)
19 {
20     int i = 0;
21     printf("2.固定长度数组指针传参,以指针或二维数组元素方式访问\n");
22     for (i = 0; i < r; i++) {
23         int j = 0;
24         for (j = 0; j < c; j++) {
25             // 第1种方式
26             // printf("%d ", *(*(p + i) + j));
27             // 第2种方式
28             printf("%d ", p[i][j]);
29         }
30         printf("\n");
31     }
32 }
33 
34 // 二级指针
35 void print3(int** p, int r, int c)
36 {
37     int i = 0;
38     printf("3.二级指针传参,以指针(一维数组寻址)方式访问数组元素\n");
39     for (i = 0; i < r * c; i++) {
40         printf("%d ", *((int*)p + i));
41         if ((i + 1) % c == 0 && i < r * c - 1) {
42             printf("\n");
43         }
44     }
45     printf("\n");
46 }
47 
48 // 二级指针
49 void print4(int** p, int r, int c)
50 {
51     int i = 0;
52     printf("4. 二级指针传参,以指针(二维数组寻址)方式访问数组元素\n");
53     for (i = 0; i < r; i++) {
54         int j = 0;
55         for (j = 0; j < c; j++) {
56             printf("%d ", *((int*)p + i * c + j));
57         }
58         printf("\n");
59     }
60     printf("\n");
61 }
62 
63 int main(int argc, char* argv[])
64 {
65     printf("二维数组以不同形式的参数传参给函数,并且以不同的访问方式输出元素值\n");
66 
67     int arr[3][5] = {
68         100, 200, 300, 400, 500,
69         110, 220, 330, 440, 550,
70         111, 222, 333, 444, 555
71     };
72 
73     print1(arr, 3, 5); // 二维数组传参
74 
75     print2(arr, 3, 5); // 数组指针传参
76 
77     print3((int**)arr, 3, 5); // 二级指针传参
78 
79     print4((int**)arr, 3, 5); // 二级指针传参
80 
81     return 0;
82 }

 

posted @ 2022-11-10 15:44  O青梅煮酒O  阅读(789)  评论(0编辑  收藏  举报