본문 바로가기
Major/#C언어 (C Programming)

포인터 변수 (Pointer variable)

by Bright_Between 2023. 5. 19.
반응형

포인터 변수는 C 언어에서 매우 중요한 개념입니다. 포인터는 다른 변수의 주소를 저장하고 참조할 수 있는 변수입니다. 이를 통해 메모리의 효율적인 사용과 복잡한 데이터 구조의 구현이 가능해집니다. 이제 포인터 변수에 대해 자세히 알아보고, 간단한 코딩 예시를 통해 포스팅해보겠습니다.

 



포인터 변수는 다른 변수의 주소를 저장하는 변수입니다. 즉, 변수의 메모리 주소를 가리키는 것이죠. 포인터는 '*' 연산자를 사용하여 선언하며, 변수 이름 앞에 '*'를 붙입니다. 아래는 포인터 변수를 선언하는 예시입니다.

 

int* ptr; // 정수형 포인터 변수 ptr 선언
float* fptr; // 실수형 포인터 변수 fptr 선언
char* cptr; // 문자형 포인터 변수 cptr 선언

 



포인터 변수를 선언하면 해당 변수는 메모리 주소를 저장할 수 있는 공간을 가지게 됩니다. 이제 포인터 변수를 사용하여 다른 변수의 주소를 저장하고, 해당 변수의 값을 참조하는 방법에 대해 알아보겠습니다.

int num = 10;
int* ptr; // 포인터 변수 ptr 선언
ptr = # // 포인터 변수에 num의 주소를 저장

printf("num의 값: %d\n", num);
printf("num의 주소: %p\n", &num);
printf("ptr이 가리키는 주소의 값: %d\n", *ptr);


위 예시에서 포인터 변수 ptr은 정수형 변수 num의 주소를 저장합니다. 이를 위해 '&' 연산자를 사용하여 num의 주소를 가져왔습니다. 포인터 변수를 출력할 때에는 '%p' 형식 지정자를 사용하고, 포인터가 가리키는 변수의 값을 가져오기 위해 '*' 연산자를 사용합니다.

출력 결과는 다음과 같을 것입니다.

 

num의 값: 10
num의 주소: 0x7ffca9c08bfc
ptr이 가리키는 주소의 값: 10



포인터 변수 ptr을 통해 num의 주소를 참조하고, 해당 주소에 저장된 값을 가져올 수 있습니다. 이렇게 포인터를 사용하면 변수의 값을 직접 변경할 수도 있습니다.

 

int num = 10;
int* ptr = #

printf("num의 값: %d\n", num);
*ptr = 20; // 포인터를 통해 num의 값을 변경
printf("변경된 num의 값: %d\n", num);



위 예시에서는 포인터 변수 ptr을 통해 num의 값을 20으로 변경했습니다. 결과적으로 num의 값도 변경되었음을 알 수 있습니다. 출력 결과는 다음과 같을 것입니다.

 

num의 값: 10
변경된 num의 값: 20


포인터 변수를 사용하여 변수의 값을 변경할 경우, 해당 주소에 저장된 변수의 값이 변경되므로 원래 변수에도 영향을 줍니다.

또한, 포인터 변수를 사용하여 동적 메모리 할당을 할 수도 있습니다. 동적 메모리 할당은 프로그램 실행 중에 메모리 공간을 할당하고 해제하는 기능을 제공합니다. 이를 위해 `malloc()` 함수를 사용하며, `malloc()` 함수는 할당된 메모리의 주소를 반환합니다. 아래는 동적으로 정수형 배열을 할당하고 사용하는 예시입니다.

 

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

int main() {
    int size;
    printf("배열의 크기를 입력하세요: ");
    scanf("%d", &size);

    int* arr = (int*)malloc(size * sizeof(int));

    printf("정수를 입력하세요:\n");
    for (int i = 0; i < size; i++) {
        scanf("%d", &arr[i]);
    }

    printf("입력한 정수 출력:\n");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }

    free(arr); // 동적으로 할당한 메모리 해제

    return 0;
}

 


위 예시에서는 사용자로부터 배열의 크기를 입력받고, 해당 크기만큼의 정수를 입력받아 출력합니다. `malloc()` 함수를 사용하여 정수형 배열을 동적으로 할당하고, `free()` 함수를 사용하여 메모리를 해제합니다.

포인터 변수는 C 언어에서 다양한 용도로 사용됩니다. 배열, 문자열, 구조체, 함수 포인터 등 다양한 데이터 구조와 동적 할당에 활용됩니다. 포인터의 사용은 메모리 관리와 성능 최적화에 매우 유용하며, C 언어의 핵심적인 개념 중 하나입니다.

반응형

댓글