나의 지식 보관소
함수포인터 본문
함수 또한 변수처럼 메모리공간에 저장되는데, 함수포인터 변수는 이런 메모리상에 저장된 함수 주소 값을 저장하는 포인터변수를 말한다.
또한 배열의 이름이 배열의 시작지점 주소를 가리키듯이 함수의 이름은 함수가 저장된 메모리 공간의 주소 값을 의미한다.
그렇다면 함수이름의 포인터형은 어떤 기준으로 결정될까? 우리가 함수를 사용할때는 매개변수와 반환형 그리고 어떤 일을 하는지만 알면된다. 그마저도 함수가 어떤 일을 하는지 몰라도 작동은 가능하다. 즉 매개변수와 반환형 이 두가지
포인터형을 결정짓는다.
그러니 함수의 포인터 변수의 선언은 아래와 같이 하면된다.
int (*funPtr) (float) //funPtr은 float형 매개변수 하나를 받고 int형을 반환하는 함수 포인터
매개 변수가 두개이상이면 다음과 같이 하면된다.
int (*funPtr) (float, int) //funPtr은 float형 int형 매개변수를 하나씩 받고 int형을 반환하는 함수 포인터
함수 포인터의 사용은 아래와 같다.
int Add(int a, int b)
{
return a+b;
}
int main(void)
{
int (*funPtr) (int, int) //funPtr은 int형 매개변수 두개를 받고 int형을 반환하는 함수 포인터
funPtr = Add;
printf("%d",funPtr(1,2));
return 0;
}
'프로그래밍 언어 > C' 카테고리의 다른 글
VScode 에서 C언어 디버깅모드 쓰기 (0) | 2021.07.20 |
---|---|
void 포인터 (0) | 2020.01.09 |
다차원 배열과 포인터의 관계 (0) | 2020.01.05 |
포인터를 대상으로 하는 const선언 (0) | 2020.01.05 |
상수 형태의 문자열 (0) | 2020.01.05 |