함수 이름은 메모리 주소를 반환합니다

 

함수 이름의 메몰 주소를 반환하는 예시

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)(intint= add;
    printf("%d\n", fp(103));
    fp = sub;
    printf("%d\n", fp(103));
    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))(intint) {
    printf("%s\n", a);
    return add;
}
 
int main (void){
    printf("%d\n", process("10과 20을 더해보겠습니다.")(1020));
    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

+ Recent posts