본문 바로가기
컴퓨터 공학/C, C++

[ C 언어 ] 함수 포인터란?

by hahehohoo 2020. 7. 7.
반응형

 

 

C 언어  함수 포인터란?

 

 

 

C언어를 Low레벨 언어라고 볼 수 있는 이유 중 하나는 '포인터'입니다. 

'포인터'를 이용하면 메모리에 접근할 수 있기 때문입니다. 

 

'함수 포인터'도 함수가 저장되어 있는 메모리 공간에 접근할수 있습니다.

어떻게 가능할까요?

바로 함수의 주소 값을 통해서입니다. 

 

즉, 함수의 주소 값 저장을 위해 별도로 선언한 포인터 변수를 '함수 포인터'라고 합니다.

 


■ 함수 포인터 변수의 선언

1. 반환형이 int

2. 함수포인터의 이름

3. 매개변수 선언이 int 1개


 

■ 함수 포인터 변수의 쓰임새

- 구조체에서 멤버함수를 커스터마이징할 때 

- 함수 자체를 매개변수로 받을 때 

 


 

■ 함수 포인터 변수의 예제

#include <stdio.h> 
 
void fun(int num) {
    printf("%d\n", num);
}
 
int main() {
    void (*fun_ptr)(int);   // 함수 포인터 선언
    fun_ptr = &fun;         // fun() 함수의 주소값을 함수 포인터에 할당
 
    (*fun_ptr)(3);          // 함수 포인터를 사용하여 fun() 함수 호출
 
    return 0;
}

-  fun() 함수를 가리키는 fun이라는 함수의 이름도 사실 하나의 함수 포인터이다. 

- 함수 포인터를 참조하거나 역참조해도 여전히 함수의 코드를 가리키는 포인터로서 동작한다. 

- 함수 포인터를 호출할 때 일반적인 함수 호출의 경우와 같이 *와 괄호의 생략이 가능하다. 

- 함수 포인터를 여러 개 담고 있는 함수 포인터 배열도 선언이 가능하다. 

 

 

 

 

 

 

-----------------------------------

C언어 문법 총정리

목록 보러가기 

-----------------------------------

 

 

 

 

반응형


댓글