C언어
함수 포인터
khon98
2020. 12. 8. 22:05
함수 포인터
1.
- C언어에서는 함수의 이름을 이용해 특정한 함수를 호출함
- 함수 이름은 메모리 주소를 반환함
#include <stdio.h>
#include <stdlib.h>
void function(){
printf("It's my function");
}
int main(void) {
printf("%d\n", function);
system("pause");
return 0;
}
2.
- 함수 포인터는 특정한 함수의 반환 자료형을 지정하는 방식으로 선언할 수 있음
- 함수 포인터를 이용하면 형태가 같은 서로 다른 기능의 함수를 선택적으로 사용할 수 있음
반환 자료형(*함수명)(매개변수) = 함수명;
반환 자료형(*이름)(매개변수) = 함수명;
* 매개변수 및 반환 자료형이 없는 함수 포인터
#include <stdio.h>
#include <stdlib.h>
void myFunction(){
printf("It's my function.\n");
}
void yourFunction(){
printf("It's your function.\n");
}
int main(void){
void(*fp)() = myFunction;
fp();
fp = yourFunction;
fp();
system("pause");
return 0;
}
* 매개변수 및 반환 자료형이 있는 함수 포인터
#include <stdio.h>
#include <stdlib.h>
int add(int a, int b) {
return a + b;
}
int sub(int a, int b) {
return a - b;
}
int main(void) {
int(*fp) (int, int) = add;
printf("%d\n", fp(10, 3));
fp = sub;
printf("%d\n", fp(10, 3));
system("pause");
return 0;
}
* 함수 포인터를 반환하여 사용하기
#include <stdio.h>
#include <stdlib.h>
int add(int a, int b) {
return a + b;
}
int(*process(char *a))(int, int) {
printf("%s\n", a);
return add;
}
int main(void){
printf("%d\n", process("10과 20을 더한 값을 출력")(10, 20));
system("pause");
return 0;
}
- C언어 프로그램의 모든 함수는 내부적으로 포인터 형태로 관리할 수 있음
- 함수 포인터는 자주 사용되지 않지만 알고 있으면 컴퓨터의 구조를 이해하는데 도움을 줌