함수 포인터

CBeginner
지금 연습하기

소개

함수 포인터는 변수가 값의 메모리 주소를 저장하는 것과 마찬가지로 함수의 메모리 주소를 저장하는 방법입니다. 포인터를 통해 함수를 호출할 때, 이를 함수 포인터라고 부릅니다.

이 랩에서는 함수 포인터를 사용하는 방법을 보여주는 C 프로그램을 작성할 것입니다.

가리킬 함수 선언 및 정의

이 단계에서는 두 개의 정수 인수를 받아들이고 아무것도 반환하지 않는 함수를 선언하고 정의합니다.

#include<stdio.h>

void func(int a, int b)
{
    printf("\n\n a = %d \n", a);
    printf("\n\n b = %d \n", b);
}

함수 포인터 선언

이 단계에서는 1 단계에서 생성된 함수에 대한 포인터를 선언합니다. 함수 포인터를 선언하는 구문은 변수에 대한 포인터를 선언하는 것과 유사하지만, 가리키는 함수의 매개변수 유형과 반환 유형을 지정합니다.

// function pointer
void (*fptr)(int , int);

함수 주소를 포인터에 저장

이 단계에서는 1 단계에서 생성된 함수의 주소를 2 단계에서 생성된 포인터에 저장합니다.

// assign address to function pointer
fptr = func;

포인터를 사용하여 함수 호출

이 단계에서는 1 단계에서 생성한 함수를 2 단계에서 생성한 함수 포인터를 사용하여 호출합니다.

// function calling
func(2,3);
fptr(2,3);  // calling a function referring to pointer to a function

전체 코드 작성

~/project/ 디렉토리에서 main.c 파일을 엽니다.

#include<stdio.h>

void func(int a, int b)
{
    printf("\n\n a = %d \n", a);
    printf("\n\n b = %d \n", b);
}

int main()
{
    printf("\n\n\t\tLabEx - Best place to learn\n\n\n");

    // function pointer
    void (*fptr)(int , int);

    // assign address to function pointer
    fptr = func;

    // function calling
    func(2,3);
    fptr(2,3);  // calling a function referring to pointer to a function

    printf("\n\n\t\t\tCoding is Fun !\n\n\n");
    return 0;
}

코드 컴파일 및 실행

코드를 컴파일하려면 터미널을 열고 다음 명령을 입력하십시오.

gcc main.c -o main

프로그램을 실행하려면 다음 명령을 입력하십시오.

./main

요약

이 랩에서는 C 프로그램에서 함수 포인터를 사용하는 방법을 배웠습니다. 가리킬 함수를 선언하고 정의하는 방법, 함수 포인터를 선언하는 방법, 함수의 주소를 포인터에 저장하는 방법, 그리고 포인터를 사용하여 함수를 호출하는 방법을 살펴보았습니다. 함수 포인터를 사용하면 복잡한 프로그램을 더 쉽게 작성하고 이해할 수 있습니다.