C뉴비입니다 함수 포인터 쓰는 법 좀 알려주세요
조회수 2367회
1 답변
-
C의 함수 포인터
1. 함수 정의하기
함수 포인터를 쓰려면 함수가 있어야 하니 함수부터 만들겠습니다. 저는 간단하게 정수형 인자 2개를 받아 둘의 합을 return하는 함수를 만들었습니다.
int addInt(int n, int m) { return n+m; }
2. 함수 포인터 정의하기
그리고 함수 포인터를 정의합니다.
addInt
는 인자를 2개 받으니 이 포인터도 함수를 2개 받아야 하고, int를 return하니 int형이어야 합니다.int (*functionPtr)(int,int);
이제 마지막으로 이 포인터가
addInt
를 가리키게 합니다.functionPtr = &addInt;
3. 2의 함수 포인터 사용하기
그럼 이제 이 함수 포인터를 써봅시다. 저는 2와 3을 더해서 5를 return받았습니다.
int sum = (*functionPtr)(2, 3); // sum == 5
다른 함수에 포인터를 넘길 때도 크게 다르지 않습니다
int add2to3(int (*functionPtr)(int, int)) { return (*functionPtr)(2, 3); }
또 함수 포인터를 return하는 함수를 만들 수도 있습니다
int (*functionFactory(int n))(int, int) { printf("Got parameter %d\n", n); int (*functionPtr)(int,int) = &addInt; return functionPtr; } int main(){ int (*myfptr)(int,int) = functionFactory(6); printf("%d", (*myfptr)(2,3)); }
4.
typedef
로 함수포인터 이름 새로 만들기코드가 더러워 보인다면
typedef
를 써서 함수 포인터를 다른 이름으로 정의할 수 있습니다typedef int (*myFuncDef)(int, int); myFuncDef functionFactory(int n){ printf("Got parameter %d\n", n); myFuncDef functionPtr = &addInt; return functionPtr; } int main(){ myFuncDef myfptr = functionFactory(6); printf("%d", (*myfptr)(2,3)); }
댓글 입력