Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C/C++ 포인터 완벽 이해하기: 개념, 문법, 실전 예제

포인터(Pointer)란 무엇인가?

포인터는 기본적으로 다른 변수의 메모리 주소를 저장하는 변수입니다. 프로그램에서 변수에 메모리를 할당하면, 포인터는 그 변수가 위치한 주소를 가리키게 됩니다.

C와 C++에서 포인터를 선언할 때는 단항 연산자인 별표(*)를 사용합니다. 이 연산자는 나중에 포인터가 가리키는 메모리 주소에 저장된 값을 읽어오는 역참조(dereference)에도 활용됩니다.

포인터 선언 문법

포인터를 선언하는 기본 문법은 다음과 같습니다.

datatype *variable_name;

각 구성 요소의 의미는 다음과 같습니다.

datatype — 포인터가 가리킬 변수의 자료형입니다. int, char, float 등 어떤 자료형도 가능합니다.

variable_name — 사용자가 직접 지정하는 포인터 변수의 이름입니다.

포인터 예제 코드

다음은 포인터의 동작을 보여주는 간단한 C 언어 예제입니다.

#include <stdio.h>
int main () {
    int a = 8;
    int *ptr;
    ptr = &a;
    printf("Value of variable : %d\n", a);
    printf("Address of variable : %d\n", ptr);
    printf("Value pointer variable : %d\n",*ptr);
    return 0;
}

실행 결과

Value of variable : 8
Address of variable : -201313340
Value pointer variable : 8

코드 상세 설명

위 프로그램에서는 정수형 변수 a와 포인터 변수 *ptr을 선언했습니다. 핵심 코드는 다음 세 줄입니다.

int a = 8;
int *ptr;
ptr = &a;

첫 번째 줄에서 정수형 변수 a에 8이라는 값을 초기화하고, 두 번째 줄에서 int형을 가리키는 포인터 ptr을 선언합니다. 세 번째 줄의 &a는 주소 연산자(address-of operator)로, 변수 a의 메모리 주소를 구해 포인터 ptr에 대입합니다.

실행 결과를 보면 첫 번째 출력은 변수 a의 값(8), 두 번째 출력은 포인터에 저장된 메모리 주소값(실행 환경마다 달라질 수 있음), 세 번째 출력은 포인터를 역참조하여 가져온 값(8)임을 확인할 수 있습니다. 즉, 포인터 ptr은 변수 a의 주소를 저장하고 있으며, *ptr을 통해 간접적으로 a의 값에 접근할 수 있습니다.