프로그래밍에서 함수 포인터는 C 언어의 강력한 기능 중 하나입니다. 함수 포인터를 사용하면 다른 함수를 가리키고 호출할 수 있습니다. 또한, 함수 포인터의 배열을 사용하여 여러 함수를 참조하는 배열을 만들 수 있습니다.
함수 포인터 사용하기
함수 포인터를 선언할 때는 함수의 반환 형식과 매개변수의 형식을 지정해야 합니다. 예를 들어, int 형식을 반환하고 int 형식의 매개변수를 하나 가지는 함수 포인터를 선언하려면 다음과 같이 작성합니다.
int (*ptr)(int);
위의 코드에서 ptr은 int 형식을 반환하고 int 형식의 매개변수 하나를 갖는 함수를 가리키는 포인터입니다.
함수 포인터 배열 만들기
다음으로, 여러 함수를 가리키는 함수 포인터의 배열을 만들어 보겠습니다.
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int multiply(int a, int b) {
return a * b;
}
int divide(int a, int b) {
return a / b;
}
int main() {
int (*func_ptr[4])(int, int) = {add, subtract, multiply, divide};
int result = func_ptr[0](10, 5); // add 함수 호출
return 0;
}
위의 코드에서 func_ptr은 add, subtract, multiply, divide 함수를 가리키는 함수 포인터의 배열을 나타냅니다.
함수 포인터 배열의 참조 값을 포인터로 사용하기
함수 포인터 배열을 다룰 때 주의할 점은 배열이 함수 주소를 가지고 있기 때문에 이를 간접적으로 참조해야 한다는 점입니다. 이를 위해 포인터를 사용하여 함수를 호출하거나 참조할 수 있습니다.
int main() {
int (*func_ptr[4])(int, int) = {add, subtract, multiply, divide};
int (*ptr)(int, int);
ptr = func_ptr[1]; // subtract 함수를 ptr에 할당
int result = ptr(10, 5); // subtract 함수 호출
return 0;
}
위의 예제에서 ptr을 사용하여 함수 포인터의 배열을 간접적으로 참조하여 subtract 함수를 호출하였습니다.
함수 포인터와 함수 포인터의 배열은 복잡한 프로그램을 작성할 때 유용하며, 강력한 기능을 제공합니다. 유연한 함수 호출 및 다양한 동작을 쉽게 구현할 수 있어 많은 경우에 유용하게 사용됩니다.
이처럼 C 언어에서 함수 포인터와 함수 포인터의 배열을 참조하는 값을 포인터로 사용하는 방법을 알아보았습니다.
참고 문헌:
- https://www.tutorialspoint.com/cprogramming/c_function_pointers.htm
- https://www.geeksforgeeks.org/function-pointer-in-c/
- https://www.programiz.com/c-programming/c-pointer-to-array