Home 함수 포인터
Post
Cancel

함수 포인터

개요

함수를 가리키는 포인터
함수를 배열 또는 구조체에 넣거나, 함수 자체를 함수의 매개변수로 넘겨주고, 반환값으로 가져오기 위해 사용됨.

특징

  • 함수 포인터도 포인터이기 때문에, 일반적인 포인터와 마찬가지로 메모리 주소를 가리킴.
  • 하지만 일반적인 포인터와 달리, 함수 포인터는 데이터가 아닌 코드의 위치를 가리킴.
  • 함수 포인터는 코드의 시작부분을 가리킴. (배열을 가리키는 포인터가 첫번째 값을 가리키는 것과 같음)
  • 함수 포인터를 통해 메모리를 할당하거나 회수하는 것은 불가능. → 함수 포인터를 대상으로 malloc(), free() 함수 사용 불가.

사용 예시

매개변수가 없는 경우

반환값자료형 (*함수포인터이름)();

  • void hello() 함수가 있을 때, void(*fp)(); 형태로 함수 포인터 선언
  • fp = hello; 형태로 포인터에 함수 주소 저장.(함수이름이 포인터이므로 이름만 쓰면 됨.)
    • fp = hello; : hello 함수의 메모리 주소를 함수 포인터 fp에 저장
  • fp(); 형태로 호출

매개변수가 있는 경우

반환값자료형 (*함수포인터이름)(매개변수자료형1, 매개변수자료형2);

1
2
3
4
int add(int a, int b)    // int형 반환값, int형 매개변수 두 개
{
    return a + b;
}

int (*fp)(int, int); int형 반환값, int형 매개변수 두 개가 있는 함수 포인터 fp 선언

Ref.

https://dojang.io/mod/page/view.php?id=592
https://aahc.tistory.com/17

This post is licensed under CC BY 4.0 by the author.

Minitalk ① Subject

Minitalk ② 배경 지식 : 시그널