Jiyong's STUDY
함수 포인터 본문
함수 포인터란?
함수의 구조를 보면
type FunctionName(type a...)
함수에는 type형의 정보와 전달 인자의 정보가 항상 있다.
그렇다면 이것을 보고 어쩌면 함수도 포인터가 아닐까?라는 생각을 할 수 있는데
실제로 함수의 이름은 함수가 할당되어 있는 메모리를 가리키는 포인터이다.
정확히는 함수 포인터 상수라고 할 수 있다.
그렇다면 함수 포인터 변수는 어떻게 선언할까?
그 전에 함수 포인터의 포인터 형을 알아보자면
int FunctionName(int a, double b);
반환형이 int이며, 전달 인자로 int형, double형을 하나씩 받는다고 설명해야 한다.
즉 함수 포인터의 포인터 형에는 반환형과 전달 인자의 선언에 대한 정보가 담겨있다.
그렇다면 함수 포인터 변수를 선언할 때 그러한 내용이 있어야 하므로,
FunctionName을 가리킬 수 있는 함수 포인터 변수를 선언한다면
int (*ptr)(int, double)이 된다.
마지막으로 예제를 보자면
void AddNum(int a, int b){
printf("%d+%d=%d\n", a, b, a+b);
}
int main(){
void (*fptr)(int, int)=&AddNum;
fptr(3,4);
}
결과 >> 3+4=7
(참고로 전역변수로의 선언 또한 가능하다.)
'프로그래밍 > C' 카테고리의 다른 글
구조체 struct와 typedef 선언 (0) | 2018.05.18 |
---|---|
void 포인터 (0) | 2018.05.16 |
C언어의 main함수와 argc, argv (0) | 2018.05.16 |
2차원 배열 이상의 포인터형과 배열 포인터와 포인터 배열 (0) | 2018.05.15 |
문자열을 정수로 변환하는 함수들 (0) | 2018.05.15 |