본문 바로가기

C언어/자료구조

함수 포인터

함수 포인터 

 

- 함수를 가리키는 포인터 

- 함수 포인터의 자료형은 가리키는 함수에 따라 다름 

 

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