728x90
▶함수 포인터 선언
void (*func)(void) = nullptr;
void형 함수와 매개변수 없음.
int (*func)(int) = nullptr;
int형 함수와 int형 매개변수
int (*func[4])(int, int) = {};
크기가 4인 함수 포인터 배열
void print(int (*func)(int, int))
{
}
print함수의 매개변수 func 함수 포인터
int (*func(int x, int y))(int, int)
{
}
함수 포인터를 함수 반환값으로 사용
▶사용예시
void (*func)(void) = nullptr;
#include <stdio.h>
void print()
{
printf("hello!\n");
}
int main()
{
void (*func)(void) = nullptr;
func = print; //print함수의 메모리 주소를 함수 포인터 func에 저장
func(); //print함수 호출
return 0;
}
결과 : hello!
int (*func)(int) = nullptr;
#include <stdio.h>
int add(int a, int b)
{
return a + b;
}
int main()
{
int (*func)(int, int);
int result;
func = add; //add함수의 주소값을 함수포인터 func에 저장
result = func(10, 20); //함수포인터 func를 add함수처럼 사용
printf("%d\n", result);
return 0;
}
결과 : 30
int (*func[4])(int, int) = {};
#include <stdio.h>
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 div(int a, int b)
{
return a / b;
}
int main()
{
int (*func[4])(int, int) = {add, sub}; //func함수 포인터배열에 add, sub 함수 초기화
func[2] = mul; //mul함수 주소값 저장
func[3] = div; //div함수 주소값 저장
printf("%d ", func[0](4, 4)); //add함수 호출
printf("%d ", func[1](4, 4)); //sub함수 호출
printf("%d ", func[2](4, 4)); //mul함수 호출
printf("%d ", func[3](4, 4)); //div함수 호출
return 0;
}
결과 : 8 0 16 1
void print(int (*func)(int, int))
{
}
#include <stdio.h>
int add(int a, int b)
{
return a + b;
}
void print(int (*func)(int, int)) //매개변수 함수포인터
{
printf("%d\n", func(10, 20)); //add함수 호출
}
int main()
{
print(add); //func함수 포인터에 add함수 주소값 저장
return 0;
}
결과 : 30
int (*func(int x, int y))(int, int)
{
}
#include <stdio.h>
int add(int a, int b)
{
return a + b;
}
int (*func(int x, int y))(int, int)
{
printf("%d %d ", x, y); //func함수포인터의 매개변수 x, y
return add; //add함수 반환
}
int main()
{
printf("%d\n", func(1, 2)(30, 40)); //1,2는 func함수포인터에 30,40은 add함수에 전달
return 0;
}
결과 : 1 2 70
728x90
'C > 개념, 이해' 카테고리의 다른 글
char , wchar_t C언어 (0) | 2021.11.19 |
---|---|
const 포인터 C언어 (0) | 2021.11.18 |
volatile 변수 C언어 (0) | 2021.11.18 |
비트연산자와 사용예시 C언어 (0) | 2021.11.18 |
댓글