[c언어] 함수 포인터와 함수 포인터의 배열의 배열
C 언어에서는 함수 포인터와 함수 포인터의 배열을 사용하여 다양한 기능을 구현할 수 있습니다. 함수 포인터는 함수의 주소를 저장하는 변수로, 이를 활용하여 프로그램의 유연성을 높일 수 있습니다. 함수 포인터의 배열은 여러 함수 포인터를 하나의 배열에 저장하여 효율적으로 관리할 수 있습니다.
함수 포인터
함수 포인터를 정의하고 사용하는 방법은 다음과 같습니다.
#include <stdio.h>
void sayHello() {
printf("Hello!\n");
}
int main() {
void (*functionPtr)() = sayHello;
functionPtr(); // "Hello!"를 출력
return 0;
}
위 예제에서 functionPtr
은 sayHello
함수를 가리키는 함수 포인터입니다. 함수 포인터를 사용하여 함수를 호출할 수 있습니다.
함수 포인터의 배열
함수 포인터의 배열을 정의하고 사용하는 방법은 다음과 같습니다.
#include <stdio.h>
void function1() {
printf("This is function 1\n");
}
void function2() {
printf("This is function 2\n");
}
int main() {
void (*functionPtrArray[2])() = { function1, function2 };
functionPtrArray[0](); // "This is function 1"을 출력
functionPtrArray[1](); // "This is function 2"을 출력
return 0;
}
위 예제에서 functionPtrArray
는 두 개의 함수 포인터를 저장하는 배열입니다. 배열을 통해 여러 함수를 관리하고 호출할 수 있습니다.
함수 포인터의 배열의 배열
함수 포인터의 배열을 가리키는 포인터를 사용하여 2차원 배열을 구성할 수 있습니다.
#include <stdio.h>
void functionA() {
printf("This is function A\n");
}
void functionB() {
printf("This is function B\n");
}
int main() {
void (*functionPtrA[2])() = { functionA, functionB };
void (*functionPtrB[2])() = { functionA, functionB };
void (*(*functionPtrArray[2])[2])() = { &functionPtrA, &functionPtrB };
(*functionPtrArray[0][1])(); // "This is function B"를 출력
return 0;
}
위 예제에서 functionPtrArray
는 함수 포인터의 배열을 가리키는 포인터인 2차원 배열입니다. 이를 통해 다차원 함수 포인터 배열을 활용할 수 있습니다.
함수 포인터와 함수 포인터의 배열을 사용하면 다양한 상황에서 유연하고 효율적으로 프로그램을 구성할 수 있습니다.