C++

포인터 변수

Vetenir 2024. 12. 26. 21:08

크기

포인터의 데이터 형식은 포인터 변수의 크기를 의미하는 것이 아닙니다.

포인터 변수가 가리키는 데이터의 형식을 뜻합니다.

 

예를 들어

int *pointer

위의 코드에서 int는 해당 포인터 변수가 가리키는 변수의 타입.

 

포인터 변수의 크기

64bit 프로그램 : 8byte

32bit 프로그램 : 4byte

 

 

주의할 것

1. 배열과 포인터

배열과 포인터는 비슷하다고 생각할 수 있습니다.

하지만 위에서 보았듯이 포인터는 주소를 저장하기 위한 용도이기 때문에 크기가 정해져있지만

배열은 데이터 타입, 정적, 동적에 따라 크기를 다양하게 설정할 수 있습니다. 

 

2. 변수와 배열

포인터 변수를 선언하고 변수의 주소를 받기 위해 보통은 아래와 같이 선언하지만

int* pointer = &variable;

 

배열을 받을 때는 배열의 첫 번째의 주소를 받기 때문에 '&'를 쓰지 않는다.

int* pointer = array;

 

3. 유효한 메모리

포인터를 역참조하기 전에 포인터가 유효한 메모리를 가리키는지 확인해야 합니다.

유효하지 않은 메모리를 가리키는 포인터를 역참조하려고 하면 세그멘테이션 실패나 런타임 오류가 발생할 수 있습니다.

 

4. 포인터 연산

할당된 메모리의 범위를 벗어나는 포인터 연산인지 확인해야 합니다.