Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코드트리
- 1일1코테
- 프로그래머스
- #코드트리 #코딩테스트 #코테공부 #백트래킹 #알고리즘 기초
- 코딩테스트
- 개발자루틴
- 오블완
- 코딩테스트사이트추천
- 파이썬
- 운영체제
- 자바스크립트
- 99클럽
- til
- C
- 항해99
- Java
- 티스토리챌린지
- 프로그래밍 언어
- 코테공부
- 인접 행렬
- 자바
- 연결 리스트
- 웹
- 개발자취업
- 코딩테스트준비
- 갭체크
- 알고리즘
- 자료구조
- 데이터베이스
- 플로이드-워셜
Archives
- Today
- Total
와드의 블로그
20. 함수 포인터 본문
(1) 함수 포인터
* 프로세스 메모리 영역에 저장되는 명령
C 언어로 작성한 소스 코드가 컴파일러에 의해 기계어로 번역되면 실행 파일이 된다. 이 실행 파일은 CPU가 처리할 수 있는 기계어 명령문 단위로 이루어진다. 그리고 해등 프로그램이 실행되어 프로세스 형태로 메모리에 저장되면 프로그램의 명령문들은 코드 세그먼트에 옮겨진다. 결국 명령문들도 메모리에 저장되어 있기 때문에 각 명령문마다 주소를 갖는다는 뜻이다.
* 함수 포인터란?
함수 포인터란 특정 함수를 구성하는 시작 명령의 위치를 가리키는 포인터이다. 함수 포인트를 사용하면 해당하는 함수를 호출하여 실행할 수 있다.
함수의 주소 값으로 함수 실행하기
int Sum(int a, int b) {
return a + b;
}
int (*p)(int, int); // 두 개의 int형 매개변수를 갖고 반환형이 int인 함수 포인터 선언
p = ∑ // Sum 함수의 주소를 함수 포인터 p에 저장
int result = (*p)(2,3); // Sum(2,3)과 같다.
(2) 함수 그룹
* 원형이 같은 함수들을 묶기
함수의 포인터를 사용하는 가장 단순한 이유는 같은 형식의 함수를 그룹으로 묶을 수 있기 때문이다.
다음과 같이 여러 원형이 같은 함수를 함수 포인터의 배열로 다룰 수 있다.
#include <stdio.h>
int Sum(int a, int b) {
return a + b;
}
int Sub(int a, int b) {
return a - b;
}
int Mul(int a, int b) {
return a * b;
}
int Div(int a, int b) {
return a / b;
}
int main()
{
int(*p[4])(int, int) = { &Sum, &Sub, &Mul, &Div };
for (int i = 0; i < 4; i++)
printf("%d ", (*p[i])(8, 2));
return 0;
}
참조자료: C언어 입문
'프로그래밍 언어 > C' 카테고리의 다른 글
| 19. 파일 입출력 (0) | 2021.09.18 |
|---|---|
| 18. 구조체 (0) | 2021.09.17 |
| 17. 다차원 포인터 (0) | 2021.09.17 |
| 16. 메모리 할당 (0) | 2021.09.17 |
| 15. 배열과 포인터 (0) | 2021.09.17 |