- 함수 포인터
- 이 글을 읽는 시점에는 "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언어처럼 함수 포인터 문법에 헷갈릴 만한 요소가 없으니 걱정하지 말자... (애초에 포인터 개념이 없다.)
'C언어' 카테고리의 다른 글
C언어 전역변수 초기화 (0) | 2021.03.30 |
---|---|
C언어 기초 part 2-5. 더블 포인터 (0) | 2020.06.01 |
C언어 연재, 앞으로의 계획 (0) | 2020.03.24 |
C언어 기초 part 2-4. 문자열 (2) | 2020.03.20 |
C언어 기초 part 2-3. 포인터 (20.03.27. 내용 추가) (0) | 2020.03.03 |