이번 수업(CS-DRIVEN INSIGHT, teacher: @UHD)의 주제는 포인터였다.

포인터에 대한 논의를 시작하기 전에

CPU의 아키텍처에 대해 생각해 보면 좋다.

Q. 32bit CPU와 64bit CPU 사이에는 어떤 차이가 있을까?

  1. 먼저, 한 번에 처리할 수 있는 데이터 양의 차이가 있다. 이는 곧 레지스터의 크기를 의미하기도 한다.
  2. 사용 가능한 메모리 크기의 차이가 있다.

포인터?

포인터 변수를 다뤄보며 포인터가 무엇을 의미하는지 생각해 보자.

char a = 'A';
char *pa = &a;

위 두 변수가 메모리의 Stack Segment에 쌓인 모습을 상상해 보면 다음과 같다. 설명의 편의상 변수 a의 주소는 임의로 0x09라 하자.

image.png

a에 해당하는 공간에는 그 ASCII 코드 값인 65가 저장되고, pa에 해당하는 공간에는 a의 주소인 0x09가 저장된다.

Q. 새로운 포인터 변수 pbpa를 할당한다면, pb*pb의 출력 결과는?