void show(int a)

{

    printf("%d \n",a);

}

 

show의 포인터 를 만들이렇게 됩니다.

void(*show_ptr)(int) = show;

 

show 함수의 포인터 show_ptr을 선언하는데 리턴타입은void형이고 매개변수는 int형인 포인터 *show_ptr을 선언.

음... 어렵나요? 그럼 이렇게 비교해보죠

void show(int a) --> show함수

void(*show_ptr)(int) --> 포인터 show_ptr

어떻습니까 둘이 많이 닮아있죠? 다 똑같은데 함수에 괄호()와 이름앞에 '*'붙은거 뺴곤 똑같다는것을 알수있습니다.

[ 함수와 함수포인터의 차이 ]

함수 --> 포인터 상수

함수 포인터 --> 포인터 변수

[ 함수포인터 간단한 예제]

#include <stdio.h>

void show(int a)
{
    printf("%d \n",a);
}

int main(void)
{
    int aa = 10;

    void(*show_ptr)(int) = show;
    printf("%d %d \n",show,show_ptr);

    show(aa);
    show_ptr(aa);

    return 0;
}

함수의 정체를 알았기 때문에 우린 이제 show() 함수를 이렇게 이렇게 읽어야 될겁니다. show라는 포인터가 가르키를 함수를 호출하면서 인자값으로 상수 10을 전달하라고 말이죠.

출처: https://kyoe.tistory.com/120

'C 언어' 카테고리의 다른 글

getopt  (0) 2022.07.27
포인터 배열 vs 배열 포인터  (0) 2022.07.27
%*.*s  (0) 2022.07.27
EOF와 feof  (0) 2022.07.27
fd_set  (0) 2022.07.27

+ Recent posts