Post

CPP 포인터 사용 방법

포인터 레퍼런스 용법

CPP 포인터 사용 방법

포인터와 레퍼런스 용법


포인터 (*)

포인터는 변수의 메모리 주소를 저장하는 변수이다.

기본 선언

1
2
int v;     // 정수 변수
int* p;    // int형 변수의 주소를 저장하는 포인터

주소 저장

1
2
int v = 10;
int* p = &v;
  • v에는 실제 값(10)이 저장된다.
  • p에는 v의 메모리 주소가 저장된다.
  • &vv의 주소를 의미한다.

왜 사용하는가?

값 자체를 전달하는 대신 메모리 주소를 직접 전달할 수 있기 때문이다.

특히 다음과 같은 경우에 유용하다.

  • 배열을 다룰 때
  • 객체를 전달할 때
  • 함수 인자로 전달할 때
  • 큰 데이터를 복사하지 않고 사용할 때
  • 동적 메모리를 사용할 때

복잡한 클래스나 여러 함수 호출 계층을 거칠 때 메모리 주소를 통해 직접 접근하는 것은 매우 중요하다.


레퍼런스 (&)

레퍼런스는 기존 변수에 대한 별명(Alias) 이다.

기본 선언

1
2
int v = 10;
int& r = v;

특징

1
r = 20;

위 코드를 실행하면 v20이 된다.

1
cout << v; // 20
  • rv는 같은 데이터를 가리킨다.
  • 새로운 변수가 생성되는 것이 아니다.
  • 변수의 또 다른 이름이라고 생각하면 된다.

비유

1
2
int v = 10;
int& r = v;
  • v : 본명
  • r : 별명

둘 다 같은 사람을 부르는 이름일 뿐이다.


차이점

구분포인터레퍼런스
저장하는 것메모리 주소기존 변수의 별명
선언int* pint& r = v
다른 대상 연결 가능가능불가능
NULL 가능가능불가능
주소 연산가능직접 사용하지 않음

예시

1
2
3
4
int v = 10;

int* p = &v; // 주소 저장
int& r = v;  // 별명 생성
  • pv의 주소를 저장
  • rv 자체를 다른 이름으로 사용
This post is licensed under CC BY 4.0 by the author.