[c언어] 함수 포인터와 함수 포인터의 배열의 값으로 참조를 변경하는 방법
함수 포인터의 배열 또는 배열을 선언하고 사용할 때 함수 포인터의 값으로 참조를 변경하는 방법에 대해 다루어 보겠습니다.
함수 포인터의 값을 변경하기
함수 포인터를 사용하여 함수를 변경하는 방법은 간단합니다. 함수 포인터를 선언한 후, 다른 함수의 주소로 해당 포인터를 설정할 수 있습니다.
예를 들어, 다음과 같이 두 개의 함수를 만들고 함수 포인터를 사용하여 해당 함수의 주소를 가리키게 할 수 있습니다.
#include <stdio.h>
void function1() {
printf("This is function1\n");
}
void function2() {
printf("This is function2\n");
}
int main() {
void (*ptr)() = function1; // 함수 포인터에 function1의 주소 설정
ptr(); // function1 호출
ptr = function2; // 함수 포인터에 function2의 주소 설정
ptr(); // function2 호출
return 0;
}
함수 포인터의 배열 값으로 참조 변경하기
함수 포인터의 배열을 사용하여 함수를 참조를 변경하는 것도 가능합니다. 함수 포인터의 배열을 선언하고 배열의 인덱스를 사용하여 각각의 함수 포인터를 참조할 수 있습니다.
예를 들어, 다음은 함수 포인터의 배열을 선언하고 값을 변경하는 예시입니다.
#include <stdio.h>
void function1() {
printf("This is function1\n");
}
void function2() {
printf("This is function2\n");
}
int main() {
void (*ptr[2])() = {function1, function2}; // 함수 포인터의 배열 선언과 초기화
ptr[0](); // function1 호출
ptr[1](); // function2 호출
ptr[0] = function2; // 함수 포인터의 배열 값 변경
ptr[0](); // function2 호출
return 0;
}
함수 포인터와 함수 포인터의 배열은 유용한 기능으로, 함수의 주소를 가리키고 함수의 호출을 유연하게 다룰 수 있습니다. 이러한 기능은 다른 언어에서 볼 수 있는 기능이 아니기 때문에 C 언어를 공부하시는 분들에게 도움이 될 것입니다.
참고 문헌:
- Dhar, P. (2020). Pointers to functions in C. GeeksforGeeks. 링크
- Banerjee, A. (2020). Function Pointer in C. Medium. 링크