2024. 12. 14. 06:06ㆍC_C++
포인터는 처음 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 이 된다는 것이죠.)
'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 |