[c언어] 함수 포인터와 함수 포인터의 배열 참조 값을 변경하는 방법

함수 포인터는 C 언어에서 함수를 가리키는 포인터이며, 함수 포인터의 배열은 함수 포인터들의 배열을 나타냅니다. 이 포스트에서는 함수 포인터와 함수 포인터의 배열을 선언하고, 그 값에 대한 참조를 변경하는 방법을 다루겠습니다.

함수 포인터

함수 포인터를 사용하여 함수를 가리키고 호출할 수 있습니다. 함수 포인터를 선언하고 참조하는 방법은 다음과 같습니다.

#include <stdio.h>

void sayHello() {
    printf("Hello, World!\n");
}

int main() {
    void (*ptr)() = sayHello;  // 함수 포인터 ptr을 선언하고 sayHello 함수를 가리킴
    ptr();  // 함수 포인터를 사용하여 함수 호출
    return 0;
}

위 예제에서 ptrsayHello 함수를 가리키고, ptr()을 호출하여 sayHello 함수를 실행합니다.

함수 포인터의 배열

함수 포인터의 배열을 사용하면 여러 함수를 가리키는 포인터들을 배열로 관리할 수 있습니다. 함수 포인터의 배열을 선언하고 참조하는 방법은 다음과 같습니다.

#include <stdio.h>

void func1() {
    printf("Function 1\n");
}

void func2() {
    printf("Function 2\n");
}

int main() {
    void (*funcPtrArr[2])() = {func1, func2};  // 함수 포인터의 배열을 선언하고 함수들을 가리킴
    funcPtrArr[0]();  // 배열을 통해 첫 번째 함수 호출
    funcPtrArr[1]();  // 배열을 통해 두 번째 함수 호출
    return 0;
}

위 예제에서 funcPtrArrfunc1func2 함수를 가리키는 포인터들의 배열입니다. 배열을 통해 함수들을 참조하고 호출할 수 있습니다.

함수 포인터 및 함수 포인터의 배열 값 변경하기

함수 포인터 및 함수 포인터의 배열의 값을 변경하는 방법은 포인터 변수에 다른 함수를 할당하거나, 배열의 각 요소에 다른 함수를 할당하는 것입니다. 다음은 함수 포인터 및 함수 포인터의 배열 값을 변경하는 예제입니다.

#include <stdio.h>

void func1() {
    printf("Function 1\n");
}

void func2() {
    printf("Function 2\n");
}

void func3() {
    printf("Function 3\n");
}

int main() {
    void (*ptr)() = func1;
    ptr();  // Function 1

    void (*funcPtrArr[3])() = {func1, func2, func3};
    funcPtrArr[1]();  // Function 2

    ptr = func2;  // 함수 포인터에 다른 함수 할당
    ptr();  // Function 2

    funcPtrArr[1] = func3;  // 배열의 요소에 다른 함수 할당
    funcPtrArr[1]();  // Function 3

    return 0;
}

위 예제에서는 함수 포인터 변수 ptrfunc1을 할당하고, 그 값을 변경하여 func2로 호출합니다. 또한, 함수 포인터의 배열인 funcPtrArr의 두 번째 요소에 func3 함수를 할당하여 호출합니다.

함수 포인터 및 함수 포인터의 배열을 사용하여 다양한 함수들을 가리키고 호출할 수 있으며, 필요에 따라 그 값을 변경할 수 있습니다.

이상으로 함수 포인터와 함수 포인터의 배열을 선언하고 그 값에 대한 참조를 변경하는 방법에 대해 알아보았습니다.

참고 자료: https://www.geeksforgeeks.org/function-pointer-in-c/

관련 함수: malloc(), free(), qsort()

관련 키워드: 함수 포인터, 배열, 참조 변경, C 언어