Channi Studies

[C++] 포인터(Pointer)란? 본문

C++/포인터 (Pointers)

[C++] 포인터(Pointer)란?

Chan Lee 2023. 12. 19. 17:59

Pointer

Pointer는 변수입니다.

변수의 구성 요소는 메모리상 위치, 변수 타입, 그리고 값을 가집니다.

 

포인터는 다른 변수나 함수의 주소를 저장하는 변수입니다.

이게 무슨 뜻이냐면, 변수의 '값' 에 해당하는 부분이 다른 대상의 메모리상 주소라는 것 입니다.

 

예를 들어 int x {10}; 으로 정수 변수 x를 선언하고 10을 할당했다면,

변수 x를 가르키는 다른 포인터를 선언할 수 있습니다.

 

그렇다면, 포인터는 왜 사용할까요?

포인터가 이미 존재하는 변수를 가르키는 변수라면, 그냥 원래의 변수를 사용하면 되는거 아닐까요?

 


포인터 사용의 이유

 

위의 질문을 이어서 이유를 설명하겠습니다.

맞습니다. 원래의 변수를 직접 사용하면 문제가 없습니다.

하지만, 우리는 종종 프로그램 속에서 복잡한 구조로 데이터를 다루기도 합니다.

 

예를 들면, 특정 함수 외부에서 선언된 변수에 대해서 해당 함수 내에서 접근하고 싶은 경우가 생깁니다.

그건 불가능합니다. 그 함수 블럭의 Scope 외부에 있기 때문입니다.

그럴 때 우리는 'pass by reference' 방법을 사용하거나, 포인터를 사용해서 데이터를 다룹니다.

 

또, 배열을 다룰 때에도 포인터는 매우 효율적으로 작용합니다.

Runtime 속에서 동적으로 메모리를 관리할 수 있게 해줍니다.

그 메모리 위치들에는 이름이 없기 때문에 포인터로만 접근할 수 있습니다.

메모리 내부의 특정한 위치에 접근하기에 유용하다고 생각하면 좋을 것 같습니다.