728x90
반응형
▷ 함수 포인터란?
함수의 주소를 담는 포인터
ex) 자료형 (*함수포인터명)(매개변수형, ....);
◇ 일반적인 함수 호출
int add(int a, int b){
return a + b;
}
main(){
printf("%d\n", add(10, 5));
}
◇ 함수포인터를 이용한 호출
int add(int a, int b){
return a + b;
}
main(){
int (*fp)(int, int);
fp = add;;
printf("%d\n", fp(10, 5));
}
◇ 형식이 같은 다양한 함수를 호출할 수 있다.
int add(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 dvd(int a, int b)[return a / b;}
main(){
int (*fp)(int, int);
fp = add;
printf("%d\n" , fp(10, 5)); //fp 는 add함수 호출
fp = sub;
printf("%d\n" , fp(10, 5)); //fp 는 sub함수 호출
fp = mul;
printf("%d\n" , fp(10, 5)); //fp 는 mul함수 호출
fp = dvd;
printf("%d\n" , fp(10, 5)); //fp 는 dvd함수 호출
}
▷ 함수 포인터 배열
함수 포인터도 배열로 만들 수 있다.
변수 | 포인터 | 함수포인터 | |
변수정의 | int a; | int *p; | int (*fp)(int, int); |
배열정의 | int a[2]; | int *p[3] | int (*fp[4])(int, int); |
◇ 함수 포인터 배열 사용하기
int add(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 dvd(int a, int b){return a / b;}
main(){
int (*fpa[4])(int, int) = {add, sub, mul, dvd};
// int를 리턴하는 함수를 가리키는 포인터가 4개인 배열
// 함수포인터 배열
int dx;
for(dx = 0; dx < 4; dx++)
printf("%d\n", fpa[dx](10, 5));
}
반응형
'Programming > C Language' 카테고리의 다른 글
[C] 싱글 링크드 리스트(Single Linked List) (0) | 2019.06.18 |
---|---|
[C] 반복문에 대해서 알아보자! (0) | 2019.06.15 |
[C] 함수 프로토타입이란 무엇일까? (0) | 2019.06.15 |
[C]비트연산자란 무엇인가? (0) | 2019.06.15 |
[C] Enum(열거형)에 대해 알아보자 (0) | 2019.06.15 |