C언어
C언어 기초 part 2-7. 함수 포인터
algosketch
2020. 6. 10. 19:21
- 함수 포인터
- 이 글을 읽는 시점에는 "C언어 기초 part 2-6. void 포인터"가 올라가지 않았을 수 있습니다.
1. 함수 포인터
함수 포인터를 이용하면 함수를 변수처럼 사용할 수 있다. 변수 뿐만 아니라 함수도 메모리 상에 저장되어 있기 때문에 포인터 변수에 저장하는 것이 가능하다. 선언 방법 : (반환형) (*변수 이름)(매개변수 타입)
#include <stdio.h>
int add(int num1, int num2) {
return num1 + num2;
}
int sub(int num1, int num2) {
return num1 - num2;
}
int main(void) {
int (*plus)(int, int) = add;
int (*subtract)(int, int) = sub;
printf("add: %d sub: %d", plus(5, 2), subtract(5, 2));
// 출력
// add: 7 sub: 3
return 0;
}
이 글을 쓰기 위해 함수 포인터에 대한 문법을 찾아봤다. 그만큼 사용할 일이 없다고 봐도 될 것 같다. 그러니 이정도만 언급하고 넘어가겠다. 실제로 C언어에서 변수에 함수를 담는 문법이 다른 언어에 비해 복잡하기도 하다.
함수 포인터는 C++ 혹은 다른 언어에서 배우게 될 클래스(객체 지향 프로그래밍, OOP)의 기초가 된다. 뿐만 아니라 javascript나 kotilin같은 함수형 프로그래밍이 가능한 언어의 기초가 된다. js나 kotlin에서는 C언어처럼 함수 포인터 문법에 헷갈릴 만한 요소가 없으니 걱정하지 말자... (애초에 포인터 개념이 없다.)