Day 3 - Function Pointer

2025. 2. 26. 13:19·IDEC 교육/Embedded C
목차
  1. Function Pointer
  2. Example
  3. Usage 1-1
  4. Usage 1-2
  5. Usage 2

Function Pointer

함수 포인터: 함수를 가리키는 포인터 변수

*: Pointer / []: Array / (): Function 으로 생각

Example

void func(int a, int b) { ... } // 정의
...
int main()
{
    void (*p)(int, int); // 함수 포인터 변수
    p = func;
    p(1, 2);

    return 0;
}

Usage 1-1

함수는 매개변수를 전달 받고 다음 함수로 전달하는 경우가 있는데
그럴때, 함수 포인터를 매개변수로 전달 받을 수 있고, 유기적인 함수의 선택이 가능하다.
qsort(퀵소트, 퀵정렬)함수와 같은 경우 compare함수를 매개변수로 전달 받는데,
이때 사용자는 해당 함수만 수정하여 기능을 변경 할 수 있다.

Usage 1-2

이벤트 핸들러로 사용 될 경우, 특정 이벤트가 발생시에 어떤 동작을 하는 함수가 있다면,
하나의 함수에서 각각의 다른 이벤트를 함수 포인터로 전달 받아서 실행 할 수 있게 된다.
예시로 void eventHander(void (*handler))라는 함수가 있다면 handler에 원하는 event종류를 골라 넣을 수 있게 된다.
또한 include를 통해 불러온 라이브러리 함수에 현재 파일에서 작성된 함수를 매개변수로 넘겨주어 실행할 수 있다.

= include는 선언부만 복사 해오기 때문에 실제 함수는 해당 오브젝트(.o) 파일로 jump하여서 실행
(이런식으로 연결 시켜주는게 Linking이라고 부름)

Usage 2

System 부팅 시에 Bootloader에서 Application을 넘어갈 경우에 사용
Bootloader의 실행 위치는 이미 정해저 있고 부팅시에 우선적으로 시작된다.
그 후 Bootloader는 Application을 실행하기 위해 0x0000_1000를 참조하는데,
Application의 시작 함수(Entry Point)(= void app main(void))의 주소를 저장해두어야한다,
여기서 해당 함수의 주소, 즉 함수 포인터가 쓰이게 되는 것 이다.

저작자표시 비영리 변경금지
  1. Function Pointer
  2. Example
  3. Usage 1-1
  4. Usage 1-2
  5. Usage 2
'IDEC 교육/Embedded C' 카테고리의 다른 글
  • Day 3 - 외부 변수 및 함수 참조
  • Day 3 - Structure
  • Day 3 - Character Pointer & Array
  • Day 2 - Pointer & Array
Zi_Yoon
Zi_Yoon
머리 속에 정리하는 곳 <전자공학>
  • Zi_Yoon
    ZY_repo
    Zi_Yoon
  • 전체
    오늘
    어제
    • 분류 전체보기 (70)
      • HDLBits (25)
        • Verilog (19)
        • Circuits (4)
        • Verification (0)
      • IDEC 교육 (1)
        • Embedded C (13)
        • Verilog HDL (8)
      • Hardware (8)
        • RISC-V Project (1)
        • Computer Architecture (0)
        • AMBA (2)
        • FPGA (0)
        • 논문 읽기 (1)
        • ETC. (4)
      • 42서울 (13)
        • 리눅스 (12)
        • 네트워크 (1)
      • 생각 (1)
      • 취업 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    signal trap
    lsblk
    세션 키
    research rabbit
    bit-wise and
    AXI4
    vm
    centos
    IDEC
    charater
    QUARTUS
    RISC-V
    fucntion
    verilog
    비대칭 키
    hdlbits
    보안 쉘
    verilator
    AMBA
    fpga
    ssh
    axi
    debian
    APT
    Keil
    ARM
    AppArmor
    embedded
    pointer
    c
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Zi_Yoon
Day 3 - Function Pointer
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.