[c언어] 포인터와 함수

이번 포스트에서는 c언어에서 포인터와 함수에 대해 알아보겠습니다.

1. 포인터

포인터는 메모리 주소를 저장하는 변수입니다. 메모리 주소를 직접 조작하여 데이터를 다룰 때 매우 유용합니다. 포인터를 선언할 때는 변수 이름 앞에 * 기호를 붙입니다.

예를 들어, 다음과 같이 포인터를 선언할 수 있습니다:

int *ptr;

이제 ptr은 int형 데이터를 저장하는 메모리 주소를 가리킬 수 있는 포인터입니다.

2. 함수 포인터

함수 포인터는 다른 함수의 주소를 저장하는 포인터입니다. 함수 포인터를 선언할 때는 함수의 시그니처와 일치하는 형식으로 작성합니다.

예를 들어, 다음과 같이 함수 포인터를 선언할 수 있습니다:

int (*funcPtr)(int, int);

이제 funcPtr은 두 개의 int형 매개변수를 받고 int형 값을 반환하는 함수의 주소를 저장할 수 있는 포인터입니다.

3. 포인터와 함수의 조합

c언어에서 함수는 첫 번째 명령어의 주소를 나타내는 포인터로 사용됩니다. 이것을 이용하면 포인터를 통해 함수를 호출할 수 있습니다.

예를 들어, 다음과 같이 함수 포인터를 사용하여 함수를 호출할 수 있습니다:

int sum(int a, int b) {
    return a + b;
}

int main() {
    int (*funcPtr)(int, int) = ∑  // 함수 포인터에 sum 함수의 주소를 저장
    int result = (*funcPtr)(3, 5);     // 함수 포인터를 사용하여 sum 함수를 호출
    printf("결과: %d", result);
    return 0;
}

이렇게 포인터와 함수를 조합하면 프로그램의 유연성을 향상시키고 일부 작업을 더 효과적으로 수행할 수 있게 됩니다.

결론

포인터와 함수는 c언어에서 매우 중요한 개념입니다. 포인터를 사용하여 메모리를 직접 조작하고, 함수 포인터를 통해 함수를 유연하게 다룰 수 있습니다. 이러한 기능들을 잘 활용하면 c언어로 더욱 강력하고 효율적인 프로그램을 작성할 수 있습니다.