[c언어] 함수 포인터와 void 포인터
C 언어에서는 함수 포인터와 void 포인터를 사용하여 다양한 기능을 구현할 수 있습니다. 이러한 포인터들은 프로그램의 유연성을 향상시키고 메모리를 효율적으로 활용할 수 있도록 도와줍니다.
함수 포인터
함수 포인터는 함수의 주소를 저장하는 포인터로, 특정 기능을 가진 함수를 가리키고 호출할 수 있습니다. 이는 함수를 매개변수로 전달하거나 함수 포인터 배열을 사용하는 등의 유연한 프로그래밍을 가능케 합니다.
아래는 함수 포인터를 정의하고 사용하는 간단한 예제입니다.
#include <stdio.h>
void say_hello() {
printf("Hello, World!\n");
}
int main() {
void (*ptr)() = say_hello;
ptr(); // say_hello 함수 호출
return 0;
}
위 예제에서 say_hello
함수의 주소를 함수 포인터 ptr
에 저장하고, ptr
을 통해 해당 함수를 호출하고 있습니다.
void 포인터
void 포인터는 어떠한 타입의 포인터도 저장할 수 있는 포인터입니다. 이는 어떠한 데이터나 객체의 주소를 저장하고, 필요에 따라 해당 타입으로 형변환하여 사용할 수 있도록 해줍니다.
아래는 void 포인터를 활용한 예제입니다.
#include <stdio.h>
int main() {
int num = 10;
float fnum = 3.14;
void *ptr;
ptr = #
printf("Value of num: %d\n", *(int*)ptr);
ptr = &fnum;
printf("Value of fnum: %f\n", *(float*)ptr);
return 0;
}
위 예제에서 ptr
은 int 형식의 변수 num
과 float 형식의 변수 fnum
의 주소를 저장하고, 필요에 따라서 해당 타입으로 형변환하여 값을 출력하고 있습니다.
함수 포인터와 void 포인터는 C 프로그래밍에서 다양한 상황에서 유용하게 활용될 수 있는 강력한 기능들이므로, 세심한 주의를 기울여 사용해야 합니다.
이상으로 C 언어에서 함수 포인터와 void 포인터에 대해 알아보았습니다.