C++ 문법

<포인터>

슬뷔 2022. 4. 8. 18:17

포인터 : 메모리 주소를 저장하는 변수 타입이다.
int, float 등 모든 변수 타입은 포인터 타입을 선언할 수 있다.
int변수의 주소는 int포인터 타입의 변수에 담을 수 있고 float변수의 주소는 float 포인터 타입의 변수에 담을 수 있다.

변수의 주소를 선언할때는 변수 앞에 & 을 붙여주면 해당 변수의 주소가 된다.

32비트 타겟의 프로그램은 메모리 주소가 16진수 8자리가 나오게되고,

64비트 타겟의 프로그램은 메모리 주소가 16진수 16자리가 나오게된다.
즉, 포인터 변수는 메모리 주소를 저장하는 변수이므로

32비트 타겟에서는 4바이트가 되고 64비트 타겟에서는 8바이트가 된다.

※ 포인트 사용시 주의할 점 : 이미 지워진 메모리를 참조하게 될 경우, 잘못 접근을 하면 문제가 발생한다.
이렇게 지워진 메모리를 참조하는 포인터를 댕글링 포인터 라고 한다.

포인터 변수가 다른 변수의 메모리 주소를 가지고 있는 것을 '참조한다' 라고 표현한다.
포인터 변수가 가지고 있는 메모리 주소가 있을 경우, 해당 주소에 접근하는 것을 '역참조'라고 한다.

 

포인터를 사용할 때는 선언과 동시에 특정 주소를 주는게 아니라면 nullptr로 초기화를 해준다. (nullptr은 0이다.)

 

포인터 변수가 메모리 주소를 가지고 있을 경우 앞에 *을 붙이게 되면, 해당 주소를 역으로 참조하게 되어서 해당 주소의 값을 가져오거나 값을 변경할 수 있게 된다.

 

배열의 이름은 해당 배열의 첫번째 요소의 메모리 주소이다.
즉, 배열명은 포인터가 된다.

 

※ char 배열에 문자열을 저장할때는 반드시 가장 마지막 문자의 다음을 0(null 문자)로 주어야한다.
그래야 문자열의 끝을 인식할 수 있다.

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

<포인터> void 타입, 이중 포인터  (0) 2022.04.11
<포인터> 연산 / const  (0) 2022.04.09
<배열> Array  (0) 2022.04.08
<반복문> while문, do while 문, 난수  (0) 2022.04.08
<반복문> for문  (0) 2022.04.07