2차원 배열 포인터와 매개변수 전달

2019. 7. 16. 19:05PL/C++

1. 2차원 배열 포인터를 선언하는 방법

 

#include <stdio.h>
int main(void) {
int numArr[3][4] = {
{ 11, 22, 33, 44 },
{ 55, 66, 77, 88 },
{ 99, 110, 121, 132 }
};
// int** numPtr = numArr; // 강제 캐스팅 (int**)하면 실행은 되지만, 결국 -값을 리턴하면서 끝난다
int (*numPtr)[4] = numArr; // 만일 괄호를 빼먹은다면, 배열 포인터가즉 int *numPtr[4]는 포인터 배열을 의미한다
printf("%d\n", numPtr[0][0]);
return 0;
}
view raw arr20.c hosted with ❤ by GitHub

 

2. 2차원 배열을 매개변수로 전달하는 법

 

#if 0
반환값자료형 함수이름(자료형 매개변수[][가로크기])
{
}
반환값자료형 함수이름(자료형(*매개변수)[가로크기])
{
}
#endif
#include <stdio.h>
// 혹은 void pointerArray(int (*arr)[5], int col, int row)
void pointerArray(int arr[][5], int col, int row) {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
int main(void) {
int numArr[2][5] = {
{ 1, 2, 3, 4, 5 },
{ 6, 7, 8, 9, 10 }
};
int col = sizeof(numArr[0]) / sizeof(int);
int row = sizeof(numArr) / sizeof(numArr[0]);
pointerArray(numArr, col, row);
return 0;
}
view raw arr21.c hosted with ❤ by GitHub

 

[참고] https://dojang.io/mod/page/view.php?id=563

[참고] https://www.youtube.com/watch?v=g1Bu4FiJVyQ