C/C++ 에서 포인터(pointer)의 기초

2024. 12. 14. 06:06C_C++

728x90
반응형

 

포인터는 처음 C/C++ 를 공부하는 분들에게 조금 어려운 부분이기는 합니다.

 

원론적인 설명을 예를 통해서 이야기 해보겠습니다.


 

이렇게 char* p 와 char ch 를 선언하면 메모리에 char형 포인터 p 를 저장할 공간이 할당됩니다.

char* 는 포인터이므로 64bit 컴퓨터에서는 64bit(=8byte) 의 크기를 가집니다.

(64bit 컴퓨터이므로 64bit의 메모리공간을 가질 수 있고 그 64bit의 메모리 공간을

모두 접근하려면 당연히 주소의 크기가 64bit 여야하겠죠.)

 

ch 는 char 형이므로 1byte 의 메모리공간을 가질 것입니다.

short 형은 2byte, int형은 4byte, ... 이런 식이 되겠죠.

 

여기서, 한 가지 기억할 것이,

p (char형 포인터) 에 저장되어 있는 주소도 8 byte 이지만,        (p에 저장되어 있는 값)

이 p 자체의 주소도 있을 거잖아요. p 의 주소도 8byte 입니다.   (&p 를 말합니다.)

 

ch 도 마찬가지 인데, ch 에 저장되어 있는 값은 1 byte 이지만,   (ch 의 값)

ch 의 주소는, 이것은 주소이므로 64bit 가 되겠죠.                      (&ch)

 

결과적으로 C/C++ 에서 모든 포인터형의 크기를 8 byte 가 될 것이라는 것을 알 수 있습니다.

 

이제, 이런 식으로 되겠죠.



p 에는 ch 의 주소(&ch) 가 저장될 건데, 그 크기는 주소이기 때문에 당연히 8byte 가 되겠죠.

 

포인터 p 는 ch 의 주소를 저장하고 있고, 그 주소(ch의 주소)는 p 를 이용해서 알수 있고,

그 주소에 있는 값(ch의 값) 은 *p 를 통해서 알 수 있습니다.

 

그러므로,

① 포인터는 변수의 주소를 가지고 있고

② 그 주소에 있는 값은 * 를 통해서 접근(Read/Write)할 수 있습니다.

 

사실 포인터에 대해서는 이 2가지만 기억하고 있으면 됩니다.

 

포인터는 주소이므로, 그 크기는 64bit 컴퓨터에서 항상 8byte 입니다.

(sizeof(p) = 8 이 된다는 것이죠.)

 

728x90
반응형

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

C++ - 백준 15700 타일 채우기 4  (0) 2025.01.29
C++ - 백준 5397 키로거  (1) 2025.01.05
#define _CRT_SECURE_NO_WARNINGS  (0) 2024.12.01
C++ - 백준 10804 카드 역배치  (0) 2024.11.21
C++ - 백준 2948 2009년  (1) 2024.11.18