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

C/C++에서 포인터 변수를 선언하는 방법 총정리

포인터(pointer)는 다른 변수의 메모리 주소를 저장하는 특수한 변수입니다. C/C++에서 포인터 변수를 선언하려면 변수 이름 앞에 별표(*, asterisk)를 붙이면 됩니다.

선언 문법

*pointer_name

포인터 선언 시 사용되는 핵심 연산자는 두 가지입니다.

  • & (주소 연산자): 변수의 메모리 주소를 얻습니다.
  • * (역참조 연산자, 역참조): 포인터가 가리키는 주소에 저장된 값에 접근합니다.

C 언어에서의 포인터 선언

다음 예제는 정수형 변수 a의 주소를 포인터 p에 저장하고, 이를 활용해 값을 읽고 수정하는 과정을 보여줍니다.

예제 코드

#include <stdio.h>
int main() {
   // 일반 정수형 변수
   int a = 7;
   // 변수 a의 주소를 저장하는 포인터 변수
   int *p = &a;
   // 포인터를 통해 변수 a의 값 출력
   printf("Value of Variable : %d\n", *p);
   // 변수 a의 메모리 주소 출력
   printf("Address of Variable : %p\n", p);
   // 포인터를 통해 값 재할당
   *p = 6;
   printf("Value of the variable is now: %d\n", *p);
   return 0;
}

실행 결과

Value of Variable : 7
Address of Variable : 0x6ffe34
Value of the variable is now: 6

C++에서의 포인터 선언

C++에서도 포인터 선언 방식은 C와 동일합니다. 단, 입출력에는 iostream 헤더와 cout 객체를 사용합니다.

예제 코드

#include <iostream>
using namespace std;
int main() {
   // 일반 정수형 변수
   int a = 7;
   // 변수 a의 주소를 저장하는 포인터 변수
   int *p = &a;
   // 포인터를 통해 변수 a의 값 출력
   cout<<"Value of Variable : "<<*p<<endl;
   // 변수 a의 메모리 주소 출력
   cout<<"Address of Variable : "<<p<<endl;
   // 포인터를 통해 값 재할당
   *p = 6;
   cout<<"Value of the variable is now: "<<*p<<endl;
   return 0;
}

실행 결과

Value of Variable : 7
Address of Variable : 0x6ffe34
Value of the variable is now: 6

핵심 정리

  • 포인터 선언: 자료형 뒤에 별표를 붙여 int *p; 형태로 작성합니다.
  • 초기화: & 연산자로 변수의 주소를 가져와 할당합니다(예: p = &a;).
  • 값 접근 및 수정: *p처럼 역참조하면 해당 주소의 실제 값에 접근할 수 있으며, 이를 통해 원본 변수의 값도 변경됩니다.

포인터는 C/C++ 프로그래밍의 핵심 개념으로, 동적 메모리 할당, 배열 처리, 함수 간 데이터 전달 등 다양한 상황에서 활용됩니다. 위 예제처럼 주소와 역참조의 동작 원리를 정확히 이해하는 것이 중요합니다.