[C언어] 함수 포인터

2022. 6. 12. 21:58·언어/C
728x90
반응형

함수 포인터

함수는 전역 스코프에 선언하고, 다른 함수에서 호출해서 사용할 수 있습니다.

 

이때 함수는 메모리 영역중, code 영역에 함수 정의가 저장됩니다.

 

이때 함수의 이름은 함수 정의가 있는 메모리의 시작 위치, 즉 주소입니다.

 

따라서 함수명도 포인터 변수에 넣어서 사용할 수 있는데, 그것이 함수 포인터입니다.


함수 포인터 사용법

#include <stdio.h>

int sum(int x, int y)
{
    return x + y;
}

int main()
{
    int (*fp)(int, int);
    fp = sum;
    int res = fp(10, 20);

    printf("%d\n", res);
}

함수 포인터의 선언은 좀 복잡하게 생겼습니다.

 

함수 포인터의 이름이 괄호 안에 들어가있는 형태입니다.

 

괄호를 제거하면, 주소를 반환하는 함수의 선언이 되므로 주의해야합니다.

 

함수 포인터를 인자로 주기

#include <stdio.h>

int sum(int x, int y)
{
    return x + y;
}

int mean(int a, int b)
{
    return (sum(a, b) / 2);
}

int select(int (*func)(int, int))
{
    int a, b;
    scanf("%d %d", &a, &b);
    return func(a, b);
}

int main()
{
    int menu;

    printf("0 or 1: ");
    scanf("%d", &menu);

    printf("%d\n", (menu ? select(sum) : select(mean)));
}

select 함수의 인자를 보면 반환형과 인자를 명시한 함수 포인터를 인자로 받고있습니다.

 

menu의 값에 따라 서로 다른 함수를 넣어 실행하도록 할 수 있습니다.

'언어 > C' 카테고리의 다른 글

[C언어] 배열 요소 접근과 포인터의 관계  (0) 2022.06.15
[C언어] 주소에 대한 swap 구현  (0) 2022.06.13
[C언어] Dangling Pointer와 Memory Leak  (0) 2022.06.12
'언어/C' 카테고리의 다른 글
  • [C언어] 배열 요소 접근과 포인터의 관계
  • [C언어] 주소에 대한 swap 구현
  • [C언어] Dangling Pointer와 Memory Leak
uinone
uinone
노는 게 제일 좋아😉
  • uinone
    ideaDummy
    uinone
  • 전체
    오늘
    어제
    • 분류 전체보기
      • CS
        • 확률과 통계
        • 자료구조
        • 논리회로
        • OS
        • 데이터 통신
        • 데이터 과학
        • 컴파일러
      • 알고리즘
        • 그리디
      • 컴퓨터 비전
      • 안드로이드
      • Web
        • CSS
        • TypeScript
        • React.js
      • 기타
        • 모각코
        • 메모장
        • 오류해결
        • 풍미박산 기절초풍 설치과정
      • DL
      • ML
      • 언어
        • C
        • Ocaml
      • Tensorflow
      • 8기 글로벌 SW*AI인재 프로그램
      • 논문 정리
        • 3D Object Detection
        • 3D Multi Object Tracking
      • CUDA
      • Dataset
        • NuScenes
  • 블로그 메뉴

    • LinkedIn
    • Github
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준
    우선순위 큐
    정렬
    NetworkFlow
    그리디 알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
uinone
[C언어] 함수 포인터
상단으로

티스토리툴바