컴퓨터/C++

pointer(포인터) 변수

mikasaAck 2023. 1. 23. 17:32
728x90

Intro

임베디드 개발환경에서는 메모리 레이아웃을 이해하고 개발한다.

이는 개발자가 특정 메모리 주소에 접근할 수 있음을 의미한다.

주소 접근을 위해서는, 주소 번지를 알아야 하고, 필요에 따라 번지를 저장하는 변수가 필요할 수 있다.

여기서 주소 번지는 포인터라고 하고, 이를 저장하는 변수를 포인터 변수라고 한다.

 

포인터 변수

포인터는 주소 번지이므로, 메모리의 특정 위치를 의미한다.

즉, 포인터 변수는 번지를 저장하는 변수이다.

 

포인터 변수의 type 의미

int *intp
char *charp

 

32bit 시스템에서는 번지가 4byte로 표현이 가능하다.

포인터 변수에 저장되는 값의 크기는 4byte라는 의미이다.

그렇다면, 포인터 변수 type이 왜 필요할까? 어차피 저장되는 값의 크기는 같은데!?!

포인터 변수를 우리는 왜 쓸까? 포인터 변수에 저장된 번지를 가져와서, 그 번지로부터 값을 읽어오고자 한다.

컴파일러는 값을 얼마나 읽어와야 하는지 어떻게 알 수 있을까? 그 대답이 포인터 변수의 type이다.

예를 들어, int*의 경우, 저장된 포인터로부터 4Byte 값을 읽어온다.

 

reference

다시 체계적으로 배우는 C 언어 포인터, 정재은 (지은이), 정보문화사

728x90
반응형