함수 포인터
- 함수를 가리키는 포인터
- 함수 포인터의 자료형은 가리키는 함수에 따라 다름
ex) int를 받아들여 double을 반환하는 함수
double func(int);
int형 인수를 받아들여 double형 값을 반환하는 함수에 대한 포인터
double(*fp)(int);
- 함수에 대한 포인터를 사용하여 '덧셈표'와 '곱셈표' 출력
//덧셈, 곱셈표
#include <stdio.h>
//x1과 x2의 합
int sum(int x1, int x2)
{
return x1+x2;
}
//x1와 x2의 곱
int mul(int x1,int x2)
{
return x1*x2;
}
//표 출력
void kuku(int(*calc)(int,int))
{
for(int i=1; i <=9; i++) {
for(int j=1; j <=9; j++)
printf("%3d", (*calc)(i,j));
putchar('\n');
}
}
int main()
{
puts("덧셈표");
kuku(sum);
puts("\n곱셈표");
kuku(mul);
return 0;
}
- 함수 이름은 그 함수에 대한 포인터 와 같음
- kuku(sum)
-> 함수 sum에 대한 포인터 전달
-> 포인터가 가리키는 함수의 실행으로 얻은 계산결과를 표로 출력
-> 호출된 kuku함수는 sum 함수에 대한 포인터를 매개변수 calc로 받아들임
-> 함수에 대한 포인터에 간접 연산자 *을 적용한 코드르 실행하면 그 포인터가 가리키는 함수 호출
- 함수에 대한 포인터를 사용하면 호출하는 함수를 실행하여 결정하는 동적 함수 호출 구현 가능
'C언어 > 자료구조' 카테고리의 다른 글
4-2장 큐란? (0) | 2023.07.27 |
---|---|
4-1 스택이란? (0) | 2023.07.26 |
3-3장 이진 검색 (0) | 2023.07.25 |
3-2장 선형 검색 (0) | 2023.07.25 |
3-1장 검색 알고리즘이란? (0) | 2023.07.25 |