2차원 함수 포인터 배열의 문법에 대해 알아보자.
아래와 같이 2차원 함수 포인터 배열을 만들자.
#include <stdio.h>
#define COL (2)
#define ROW (2)
void f00() { printf("This function is %s()", __FUNCTION__); }
void f01() { printf("This function is %s()", __FUNCTION__); }
void f10() { printf("This function is %s()", __FUNCTION__); }
void f11() { printf("This function is %s()", __FUNCTION__); }
int main() {
// 2차원 함수 포인터 배열을 선언하시오.
void (*fp[COL][ROW])() = { NULL, };
// 2차원 함수 포인터 배열에 위 함수를 모두 대입하시오
fp[0][0] = &f00;
fp[0][1] = &f01;
fp[1][0] = &f10;
fp[1][1] = &f11;
int col = 0;
int row = 0;
printf("input col : ");
int d1 = scanf("%d", &col);
printf("input row : ");
int d2 = scanf("%d", &row);
// 2차원 함수 포인터배열의 주소 출력 및 함수를 호출하시오
printf("Address of fp[%d][%d]: 0x%p \\r\\n", col, row, fp[col][row]);
fp[col][row]();
printf("\\r\\n");
return 0;
}
0,0을 대입했을때 실행 화면
1,0을 대입했을때 실행 화면
아래와 같은 코드 일부분이 있을때, ★★★부분을 모두 채우시오.
#include <stdio.h>
#define COL (3)
#define ROW (4)
#define SAME_SAME_CODE printf("This function is %s()", __FUNCTION__)
void f00() { SAME_SAME_CODE; }
void f01() { SAME_SAME_CODE; }
// f02(), f03()은 일부러 뺀것이다.
void f10() { SAME_SAME_CODE; }
// f11()도 일부러 뺏음
void f12() { SAME_SAME_CODE; }
void f13() { SAME_SAME_CODE; }
void f20() { SAME_SAME_CODE; }
// f21(), f22()도 마찬가지로 일부러 뺀것임
void f23() { SAME_SAME_CODE; }
int main() {
// 2차원 함수 포인터 배열을 선언하시오.
// code here...★★★
// 2차원 함수 포인터 배열에 위 함수를 모두 대입하시오
// code here...★★★
int col = 0;
int row = 0;
printf("input col : ");
int d1 = scanf("%d", &col);
printf("input row : ");
int d2 = scanf("%d", &row);
// 2차원 함수 포인터배열의 주소를 출력하시오
printf("Address of fp[%d][%d]: 0x%p \\r\\n", col, row, ★★★);
// 각 배열의 함수를 출력하시오.
//code here...★★★
printf("\\r\\n");
return 0;
}
0,0을 입력했을때 실행 화면