1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4
5 int** alloc_dyn_array(int nRow, int nCol);
6 void print_array(int** ppResult, int nRow, int nCol);
7 void free_dyn_array(int** ppResult, int nRow);
8
9 int** alloc_dyn_array(int nRow, int nCol)
10 {
11 int** ppResult = NULL;
12 int i = 0;
13 if (nRow > 0 && nCol > 0)
14 {
15 ppResult = (int**)malloc(sizeof(int*) * nRow);
16 if (NULL != ppResult)
17 {
18 for (i = 0; i < nRow; i++)
19 {
20 ppResult[i] = (int *)malloc(sizeof(int)* nCol);
21 if (NULL != ppResult[i])
22 {
23 memset(ppResult[i], 0, sizeof(int)* nCol);
24 }
25 else
26 {
27 int j=0;
28 for (i = 0; j < i; j++)
29 {
30 free(ppResult);
31 ppResult[i] = NULL;
32 }
33 ppResult = NULL;
34 break;
35 }
36 }
37 }
38 }
39 else
40 {
41 printf("오류 : alloc_dyn_array() 매개변수 \n");
42 }
43 return ppResult;
44 }
45
46 void print_array(int** ppResult, int nRow, int nCol)
47 {
48 int i = 0, j = 0;
49 if (NULL != ppResult && nRow > 0 && nCol > 0)
50 {
51 for (i = 0; i < nRow; i++)
52 {
53 for (j = 0; j < nCol; j++)
54 {
55 printf("%d", ppResult[i][j]);
56 }
57 printf("\n");
58 }
59 }
60 }
61
62 void free_dyn_array(int** ppResult, int nRow)
63 {
64 int i = 0, j = 0;
65 if (NULL != ppResult && nRow > 0)
66 {
67 for (i = 0; i < nRow; i++)
68 {
69 if (NULL != ppResult[i])
70 {
71 free(ppResult[i]);
72 }
73 }
74 free(ppResult);
75 }
76 }
77
78 int main(void)
79 {
80 int row = 2, col = 3;
81 int i = 0, j = 0;
82 int **ppResult = NULL;
83
84 ppResult = alloc_dyn_array(row, col);
85 if (NULL != ppResult)
86 {
87 printf("값 설정하기 이전 \n");
88 print_array(ppResult, row, col);
89
90 printf("값 설정한 후: \n");
91 ppResult[0][0] = 1;
92 ppResult[0][2] = 2;
93 ppResult[1][0] = 3;
94 ppResult[1][2] = 4;
95
96 print_array(ppResult, row, col);
97 free_dyn_array(ppResult, row);
98 }
99
100 return 0;
101 }
※ 동적 2차원 배열으로서, 행의 크기 nRow 변수와 열의 크기 nCol 변수를 이용하였고 alloc_dyn_array()함수는 2차원 배열을 메모리에 동적으로 할당받고
print_array() 함수는 할당받은 2차원 배열의 내용을 출력하며, free_dyn_array() 함수는 할당받았던 메모리를 해제한다.
이 챕터에서 가장 중요시 되는 것은
NULL != ( ) 매개변수 유효성 점검.
() = ()malloc(sizeof() * ) 배열 할당.
free() 메모리 해제
라고 생각이 된다.
2 #include <stdlib.h>
3 #include <string.h>
4
5 int** alloc_dyn_array(int nRow, int nCol);
6 void print_array(int** ppResult, int nRow, int nCol);
7 void free_dyn_array(int** ppResult, int nRow);
8
9 int** alloc_dyn_array(int nRow, int nCol)
10 {
11 int** ppResult = NULL;
12 int i = 0;
13 if (nRow > 0 && nCol > 0)
14 {
15 ppResult = (int**)malloc(sizeof(int*) * nRow);
16 if (NULL != ppResult)
17 {
18 for (i = 0; i < nRow; i++)
19 {
20 ppResult[i] = (int *)malloc(sizeof(int)* nCol);
21 if (NULL != ppResult[i])
22 {
23 memset(ppResult[i], 0, sizeof(int)* nCol);
24 }
25 else
26 {
27 int j=0;
28 for (i = 0; j < i; j++)
29 {
30 free(ppResult);
31 ppResult[i] = NULL;
32 }
33 ppResult = NULL;
34 break;
35 }
36 }
37 }
38 }
39 else
40 {
41 printf("오류 : alloc_dyn_array() 매개변수 \n");
42 }
43 return ppResult;
44 }
45
46 void print_array(int** ppResult, int nRow, int nCol)
47 {
48 int i = 0, j = 0;
49 if (NULL != ppResult && nRow > 0 && nCol > 0)
50 {
51 for (i = 0; i < nRow; i++)
52 {
53 for (j = 0; j < nCol; j++)
54 {
55 printf("%d", ppResult[i][j]);
56 }
57 printf("\n");
58 }
59 }
60 }
61
62 void free_dyn_array(int** ppResult, int nRow)
63 {
64 int i = 0, j = 0;
65 if (NULL != ppResult && nRow > 0)
66 {
67 for (i = 0; i < nRow; i++)
68 {
69 if (NULL != ppResult[i])
70 {
71 free(ppResult[i]);
72 }
73 }
74 free(ppResult);
75 }
76 }
77
78 int main(void)
79 {
80 int row = 2, col = 3;
81 int i = 0, j = 0;
82 int **ppResult = NULL;
83
84 ppResult = alloc_dyn_array(row, col);
85 if (NULL != ppResult)
86 {
87 printf("값 설정하기 이전 \n");
88 print_array(ppResult, row, col);
89
90 printf("값 설정한 후: \n");
91 ppResult[0][0] = 1;
92 ppResult[0][2] = 2;
93 ppResult[1][0] = 3;
94 ppResult[1][2] = 4;
95
96 print_array(ppResult, row, col);
97 free_dyn_array(ppResult, row);
98 }
99
100 return 0;
101 }
※ 동적 2차원 배열으로서, 행의 크기 nRow 변수와 열의 크기 nCol 변수를 이용하였고 alloc_dyn_array()함수는 2차원 배열을 메모리에 동적으로 할당받고
print_array() 함수는 할당받은 2차원 배열의 내용을 출력하며, free_dyn_array() 함수는 할당받았던 메모리를 해제한다.
이 챕터에서 가장 중요시 되는 것은
NULL != ( ) 매개변수 유효성 점검.
() = ()malloc(sizeof() * ) 배열 할당.
free() 메모리 해제
라고 생각이 된다.
0 개의 댓글: