본문 바로가기

C언어/C언어 문법

[C언어] 함수 포인터

728x90
반응형

함수와 주소

 

함수의 이름도 배열과 마찬가지로 주소를 나타낸다.

 

아래 코드를 통해서 확인이 가능하다.

 

#include <stdio.h>

void helloworld()
{
    printf("Hello, World!");
}

int main()
{
    printf("%p", helloworld);
    return 0;
}

 

 

 

 

 

 

 

 

 

 

 

 

함수 포인터

 

함수 포인터에는 함수의 주소값을 저장할 수 있다.

 

함수 포인터를 선언할 때에는 저장될 함수의 반환형과 매개변수가 필요하다.

 

예를 들어 int형 변수 2개를 매개변수로 갖는 double형 함수의 주소를 저장하는 함수 포인터는 다음과 같인 선언할 수 있다.

 

 double (*ptr)(int, int) = calc;
 
 
 
 double calc (int a, int b) {
	return (double)a/b;
}

 

 

 

 

 

매개변수가 없는 함수의 경우에는 아래 코드처럼 빈 괄호를 사용하여 포인터를 선언할 수 있다.

 

void (*ptr)() = helloworld;


void helloworld() {
	printf("Hello World!");
}

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형