함수 이름은 메모리 주소를 반환합니다
함수 이름의 메몰 주소를 반환하는 예시
1
2
3
4
5
6
7
8
9
|
#include <stdio.h>
void function() {
printf("It's my function.");
}
int main(void) {
printf("%d\n", function);
return 0;
}
|
cs |
함수 포인터는 특정한 함수의 반호나 자료형을 지정하는 방식으로 선언할 수 있습니다.
함수 포인터를 활용해 형태가 같은 서로 다른 기능의 함수를 선택적으로 사용할 수 있습니다.
반환 자료형(*이름)(매개변수) = 함수명;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include <stdio.h>
void myfunction() {
printf("It's my function.");
}
void yourfunction() {
printf("It's your function.");
}
int main(void) {
void(*fp)() = myfunction;
fp();
fp = yourfunction;
fp();
return 0;
}
|
cs |
위와 같이 작성하면 두 개의 함수가 차례대로 출력 됩니다
매개 변수 및 반환 자료형이 있는 함수 포인터
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include <stdio.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));
return 0;
}
|
cs |
함수 포인터를 반환하여 사용하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
//#define _CRT_SECURE_NO_WARNINGS
#include <stdio.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));
return 0;
}
|
cs |
C언어의 모든 함수는 내부적으로 포인터 형태로 관리할 수 있습니다
'C' 카테고리의 다른 글
파일 입출력 (0) | 2021.02.13 |
---|---|
구조체 (0) | 2021.02.13 |
동적 메모리 할당 (0) | 2021.02.10 |
다차원 배열과 포인터 배열 (0) | 2021.02.10 |
C언어에서 변수를 처리하는 방법 (0) | 2021.02.10 |