C++

포인터(Pointer) 기초 - C++

게임만드는학생 2023. 7. 29. 20:43

포인터(Pointer)

모든 변수는 메모리의 어느 공간에 2진수로 저장이 되어있다. 

그리고 변수이름은 그 공간을 가리키는 별칭이고 변수이름을 통해 그 공간에 있는 값에 접근이 가능하다. 

 

포인터는 그 주소를 저장할 수 있다. 

 

int num=2;
int* p1 = #

포인터를 사용할 때는 타입 뒤에 * 을 붙인다. 그리고 어떤 변수의 주소값을 저장한다. 

포인터가 아닌 어떤 변수의 주소에 접근할 때는 & 를 붙인다. 

위의 코드는 p1 에 num 의 주소를 저장한다는 뜻이다. 

 

이렇게 저장한 변수는 

*p1 = 3;
int num2 = *p1;

이런식으로 사용이 가능하다. 

첫번째 *p1 의 의미는 p1이 가리키는 주소에 접근하라는 뜻으로 그 주소에 3 을 저장하라는 의미이다. 

두번째는 p1이 가리키는 주소에 접근해서 값을 꺼내 num2 에 저장하라는 의미이다. 

 

처음엔 포인터가 정말 많이 헷갈리는데, 메모리의 각 주소마다 어떤 값을 저장할 수 있는 변수가 있다고 가정하자. 

포인터는 주소를 값으로 저장할 수 있는 타입의 변수이고 그 포인터 변수에 * 을 붙이면 포인터 변수가 값으로 가지고 있는 주소에 가서 그 바구니에 접근하라는 뜻이다. 

때문에 *p1 = 3 은 p1이 가지고 있는 주소값에 접근해서 그 바구니에 3을 저장하세요. 라는 의미고

num2 = *p1 은 p1 이 가지고 있는 주소값에 접근해서 그 바구니에 있는 값을 num2 에 저장하세요 라는 의미이다.

 

 

'C++' 카테고리의 다른 글

Visual Studio - LNK2001 에러  (0) 2023.09.02
포인터(Pointer) 연산 - C++  (0) 2023.07.31