[c언어] 함수 포인터와 함수 포인터의 배열 값의 포인터
C 언어에서 함수 포인터는 함수를 가리키는 포인터로, 실행 중에 동적으로 함수를 호출할 수 있는 기능을 제공합니다. 함수 포인터의 배열을 포인터로 다루는 방법을 살펴보겠습니다.
함수 포인터
함수 포인터를 사용하면 런타임 시에 어떤 함수를 호출할 지 결정할 수 있습니다. 함수 포인터를 사용하면 함수를 다른 함수의 매개 변수로 전달하거나, 함수 포인터를 요소로 하는 배열을 생성할 수 있습니다.
예시:
#include <stdio.h>
void sayHello() {
printf("Hello, world!\n");
}
int main() {
void (*functionPtr)() = sayHello;
functionPtr(); // "Hello, world!" 출력
return 0;
}
위의 코드에서 functionPtr
은 sayHello
함수를 가리키는 함수 포인터입니다. 따라서 functionPtr()
호출은 sayHello()
함수를 호출하는 것과 동일합니다.
함수 포인터 배열의 값을 포인터로 다루기
함수 포인터의 배열을 만들고, 해당 배열을 가리키는 포인터를 사용하여 함수를 호출할 수 있습니다.
예시:
#include <stdio.h>
void func1() {
printf("This is function 1\n");
}
void func2() {
printf("This is function 2\n");
}
int main() {
void (*funcArr[2])() = {func1, func2};
void (**funcPtr)(void) = funcArr;
funcPtr[0](); // "This is function 1" 출력
funcPtr[1](); // "This is function 2" 출력
return 0;
}
위의 코드에서 funcArr
은 두 개의 함수 포인터를 요소로 하는 배열을 나타냅니다. 이 배열을 가리키는 포인터인 funcPtr
은 배열의 각 요소를 가리킵니다.
따라서 funcPtr[0]()
호출은 func1()
함수를 호출하고, funcPtr[1]()
호출은 func2()
함수를 호출합니다.
함수 포인터와 함수 포인터 배열의 값을 포인터로 다루는 기능을 사용하면 유연하고 동적인 프로그래밍을 할 수 있습니다.
결론
C 언어에서 함수 포인터와 함수 포인터 배열의 값을 포인터로 다룰 수 있는 강력한 기능을 제공하며, 이를 통해 코드의 유연성을 높일 수 있습니다. 함수 포인터와 배열을 사용하여 프로그램의 구조를 더 동적으로 조작할 수 있습니다.