C언어에서 함수 포인터는 함수를 가리키는 포인터입니다. 이러한 함수 포인터는 다른 함수에 대한 포인터로써 사용될 수 있습니다. 함수 포인터의 포인터는 이러한 함수 포인터를 가리키는 포인터를 말합니다. 이 블로그에서는 C언어에서 함수 포인터와 함수 포인터의 포인터를 다루는 방법에 대해 알아보겠습니다.
함수 포인터
먼저, 함수 포인터를 사용하여 함수를 가리키고 호출하는 방법을 살펴보겠습니다. 아래는 함수 포인터를 정의하고 호출하는 간단한 예제 코드입니다.
#include <stdio.h>
// 더하기 함수
int add(int a, int b) {
return a + b;
}
int main() {
// 함수 포인터 선언
int (*ptr)(int, int);
// 함수 포인터에 함수 할당
ptr = &add;
// 함수 포인터를 사용하여 함수 호출
int result = ptr(3, 5);
printf("결과: %d\n", result);
return 0;
}
위의 예제에서 ptr
은 int
타입의 두 개의 인수를 받고 int
타입을 반환하는 함수를 가리키는 함수 포인터입니다. ptr
에 add
함수의 주소를 할당하였고, 이를 사용하여 add
함수를 호출하였습니다.
함수 포인터의 포인터
이제 함수 포인터의 포인터를 사용하여 함수 포인터를 간접적으로 참조하는 방법을 알아보겠습니다. 아래는 함수 포인터의 포인터를 사용하는 예제 코드입니다.
#include <stdio.h>
// 더하기 함수
int add(int a, int b) {
return a + b;
}
int main() {
// 함수 포인터의 포인터 선언
int (*(*ptr))(int, int);
// 함수 포인터의 포인터에 함수 포인터 할당
ptr = &add;
// 함수 포인터의 포인터를 사용하여 함수 호출
int result = (*ptr)(3, 5);
printf("결과: %d\n", result);
return 0;
}
위의 예제에서 ptr
은 함수 포인터를 가리키는 포인터입니다. 따라서 (*ptr)
은 함수 포인터가 되고, 이를 사용하여 add
함수를 호출하였습니다.
함수 포인터와 함수 포인터의 포인터는 함수를 동적으로 선택하여 호출하거나 함수 포인터의 배열을 관리하는 등의 용도로 사용될 수 있습니다. 이러한 포인터와 포인터의 포인터의 개념을 활용하여 프로그램의 유연성을 높일 수 있습니다.
함수 포인터와 함수 포인터의 포인터에 대한 개념과 활용에 대해 간단히 알아보았습니다. 함수 포인터를 사용하여 동적으로 함수를 선택하고 호출하는 기능은 C언어에서 매우 유용하게 활용될 수 있습니다.
참고문헌:
- https://www.geeksforgeeks.org/function-pointer-in-c/
- https://www.geeksforgeeks.org/pointer-to-pointer-in-cc/