티스토리 뷰

자료구조

함수 포인터

figS 2020. 9. 9. 18:20
반응형

[함수 포인터]

쉽게 생각 합시다. 일반 변수는 주소를 가지고 있습니다. 마찬가지로 함수 또한 주소를 가지고 있는데요.

그러면 함수 주소를 특정 변수에 저장했다가 주소를 호출하면 해당 함수를 호출 할 수 있지 않을까? 

 

#include <stdio.h>
#include <stdlib.h>

typedef int (*Func)(int, int); // 함수 포인터의 형태를 정의합니다.

typedef struct tmp
{
	int a;
	int b;
	Func function; // 함수 포인터를 담을 변수
}*pTmp;

int plusFunc(int a, int b)
{
	printf("plusFunc\r\n");
	return a + b;
}

int minusFunc(int a, int b)
{
	printf("minusFunc\r\n");
	return a - b;
}

int main(void)
{
	tmp t;

	t.a = 20;
	t.b = 10;

	t.function = &plusFunc; // plusFunc 함수의 주소(포인터)를 Function 변수에 저장를 합니다.

	int result = t.function(t.a, t.b); // 저장된 주소를 호출합니다. (plusFunc)
	printf("result : %d\r\n", result);

	t.function = &minusFunc;  // minusFunc 함수의 주소(포인터)를 Function 변수에 저장를 합니다.

	result = t.function(t.a, t.b);  // 저장된 주소를 호출합니다. (minusFunc)
	printf("result : %d\r\n", result);

	system("pause");
}

 

반응형

'자료구조' 카테고리의 다른 글

큐 리스트형 를 이용한 순차 출력  (0) 2020.09.09
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함