함수포인터
2019. 11. 13. 23:49ㆍPL/C++
함수포인터는 함수의 주소를 담는 변수로 다음과 같이 쓰인다
#include <stdio.h>
void func(int a) {
printf("value of a is %d\n", a);
}
int main(void) {
void (*p)(int);
p = func;
p(3);
void (*q)(int) = &func;
(*q)(4);
return 0;
}
q를 선언해서 사용할 때 &를 지워서 사용할 수 있다. 함수의 이름은 즉 함수의 주소를 가리키기도 한다
#include <stdio.h>
void func(int a) {
printf("value of a is %d\n", a);
}
int main(void) {
void (*p)(int);
p = func;
p(3);
void (*q)(int) = func;
q(4);
return 0;
}
함수 포인터 배열을 만들어서 사용할 수 있다. (*p[])로 선언할 수 있다
#include <stdio.h>
void add(int a, int b) {
printf("add %d+%d=%d\n", a, b, a+b);
}
void sub(int a, int b) {
printf("sub %d-%d=%d\n", a, b, a-b);
}
void mult(int a, int b) {
printf("mult %d*%d=%d\n", a, b, a*b);
}
int main(void) {
void (*op[])(int, int) = { add, sub, mult };
int a = 15, b = 10;
printf("choose op add 0, sub 1, mult 2\n");
int opt;
scanf("%d", &opt);
(op[opt])(a, b);
return 0;
}
'PL > C++' 카테고리의 다른 글
포인터로 매개변수 넘겨서 메모리 할당 시 주의할 점 (0) | 2019.11.15 |
---|---|
C++ 위임생성자 (0) | 2019.11.14 |
함수포인터가 쓰이는 경우 (0) | 2019.11.13 |
포인터 배열과 배열 포인터 (0) | 2019.11.13 |
malloc/free와 new/delete 차이 (0) | 2019.11.12 |