글
이번에는, 2 차원 배열을 함수에서 반환하고, 이를 받아보겠습니다. int 형 배열 기준으로 진행하겠습니다. (다른 자료형들도 같은 원리이기 때문입니다.) 2 차원 배열의 모든 요소를 출력하는 소스코드의 설명은 다음을 참고하시고, 이번 시간에 이 부분에 대한 설명은 생략하도록 할 예정입니다.
(2 차원 배열을 함수의 인자로 전달하기 참고)
http://kkikkodev.tistory.com/200
#include <stdio.h> #define ARR_ROW_SIZE 3 #define ARR_COL_SIZE 4 int(*ReturnArray())[ARR_COL_SIZE]; void PrintArray(int(*arr)[ARR_COL_SIZE], int row, int col); int main(int argc, char* argv[]){ int(*arr)[ARR_COL_SIZE] = ReturnArray(); PrintArray(arr, ARR_ROW_SIZE, ARR_COL_SIZE); return 0; } int(*ReturnArray())[ARR_COL_SIZE]{ static int arr[ARR_ROW_SIZE][ARR_COL_SIZE] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } }; return arr; } void PrintArray(int(*arr)[ARR_COL_SIZE], int row, int col){ int i; int j; for (i = 0; i < row; i++){ for (j = 0; j < col; j++){ printf("%d ", arr[i][j]); } printf("\n"); } }
6 ~ 7 라인
추후 사용할 함수들의 선언부입니다.
10 라인
int 형 2 차원 배열 포인터를 선언함과 동시에, ReturnArray 함수를 호출하여 받은 반환값으로 초기화하고 있습니다. ReturnArray 함수에서 반환하는 것이, int 형 2 차원 배열 포인터이기 때문에, 같은 형식으로 받아주고 있습니다.
11 라인
int 형 2 차원 배열 포인터와 행 개수, 열 개수를 넘기면서 PrintArray 를 호출하여 화면에 배열 요소들을 모두 출력합니다.
15 라인
ReturnArray 함수의 정의부입니다. 매개변수는 없고, 반환형이 int 형 2 차원 배열 포인터형인 (int (*)[ARR_COL_SIZE]) 이 함수는, 단순히 2 차원 배열을 선언하고, 정수값들로 초기화해서 반환하는 역할을 하고 있습니다.
16 ~ 20 라인
2 차원 배열을 선언함과 동시에 초기화하고 있습니다. 단, 지역 변수로 선언했을 경우에, 반환하면, 스택에서 사라지기 때문에, static 지역변수로 선언하여, 이 함수가 종료되어도, 메모리에 배열이 남아 있도록 하였습니다.
21 라인
선언하고 초기화한 2 차원 배열을 반환하고 있습니다. 이 함수의 반환형은, 2 차원 배열 포인터형이 됩니다.
함수의 반환형이 2 차원 배열 포인터형인 경우에는,
배열 요소의 자료형(*함수명(매개변수))[배열의 열 개수]{
}
의 형태로 함수의 정의부를 작성합니다. 이 함수를 호출하는 쪽에서도, 마찬가지로 2 차원 배열 포인터형의 변수를 선언하여 반환값을 받아주어야 합니다.
[실행 결과]
'1.1) 실습' 카테고리의 다른 글
2 차원 배열의 행 개수와 열 개수 구하기 (0) | 2017.05.22 |
---|---|
1 차원 배열 요소의 개수 구하기 (0) | 2017.05.22 |
2 차원 배열을 함수의 인자로 전달하기 (0) | 2015.08.02 |
정수 배열에서 중복 값 (요소) 제거하기 (2) - O(nlogn) (0) | 2015.06.08 |
정수 배열에서 중복 값 (요소) 제거하기 (1) - O(n2) (5) | 2015.06.08 |
1 초에 한 번씩 데이터 출력하기 (0) | 2015.06.08 |
프로그램 강제로 종료시키기 (0) | 2015.06.08 |
콘솔 화면 지우기 (6) | 2015.06.08 |
소리 및 음악 재생하기 (1) - WinApi (4) | 2015.05.25 |
의사 난수 (랜덤 숫자) 생성하기 (0) | 2015.05.17 |
RECENT COMMENT