✅ 목표 (Goal)

2차원 함수 포인터 배열의 문법에 대해 알아보자.

✅ 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을 대입했을때 실행 화면

0,0을 대입했을때 실행 화면

1,0을 대입했을때 실행 화면

1,0을 대입했을때 실행 화면

✅ Quiz #1: 2차원 배열 포인터 사용법 익히기

아래와 같은 코드 일부분이 있을때, ★★★부분을 모두 채우시오.

#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을 입력했을때 실행 화면

0,0을 입력했을때 실행 화면