반응형
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, C++' 카테고리의 다른 글
[ C ] 메모리 이해하기2_레지스터(Register)란? 필요한 이유 (413) | 2020.07.13 |
---|---|
[ C ] 메모리 이해하기1_메모리의 종류(스택, 힙, 레지스터?) (404) | 2020.07.12 |
맥 Xcode에서 C/C++/Object-C언어 실습 환경 갖추기 (389) | 2020.07.06 |
[C# 실습 예제] 비주얼 스튜디오2019_ Delegate (0) | 2019.11.13 |
[C# 실습 예제] 비주얼 스튜디오 2019 _사용자 정의 컨트롤 (0) | 2019.11.12 |
댓글