[c] 포인터와 함수

프로그래밍에서 포인터는 메모리의 주소를 가리키는 변수입니다. 포인터를 사용하면 함수에 데이터를 전달할 때 메모리를 효율적으로 활용할 수 있습니다. 이러한 이유로 C 언어에서는 포인터와 함수를 함께 사용하는 경우가 많습니다.

포인터를 활용한 함수 호출

포인터를 사용하여 함수를 호출하면 함수 내부에서 데이터를 직접 조작할 수 있습니다. 예를 들어, 다음과 같이 포인터를 활용하여 변수의 값을 변경하는 함수를 작성할 수 있습니다.

#include <stdio.h>

void changeValue(int *ptr) {
    *ptr = 100;
}

int main() {
    int num = 50;
    printf("Before function call: %d\n", num);
  
    changeValue(&num);
  
    printf("After function call: %d\n", num);
  
    return 0;
}

위의 예제에서 changeValue 함수는 int 형 포인터를 매개변수로 받아들이고, 해당 포인터가 가리키는 메모리 공간에 100을 저장합니다.

포인터를 반환하는 함수

또한 함수는 포인터를 반환할 수도 있습니다. 다음의 예제는 배열을 동적으로 생성하여 포인터를 반환하는 함수입니다.

#include <stdio.h>
#include <stdlib.h>

int* createArray(int size) {
    int *arr = (int*)malloc(sizeof(int) * size);
    return arr;
}

int main() {
    int *arr = createArray(5);
    for (int i = 0; i < 5; i++) {
        arr[i] = i+1;
    }

    printf("Array elements: ");
    for (int i = 0; i < 5; i++) {
        printf("%d ", arr[i]);
    }

    free(arr);
  
    return 0;
}

위의 예제에서 createArray 함수는 size에 해당하는 크기의 배열을 동적으로 생성하여 포인터를 반환합니다.

포인터와 함수를 함께 사용하여 함수 호출 시 메모리를 효율적으로 활용하고, 값의 변경이 필요한 경우 효과적으로 처리할 수 있습니다.

참고문헌