대입은 값을 바꾸고, &와 *는 주소와 실제 값을 오간다

기타 연산자를 읽을 때 먼저 “변수 값이 바뀌는가, 주소를 얻는가, 주소가 가리키는 값을 읽거나 쓰는가”를 분리합니다.

assignment

변수에 새 값을 저장

오른쪽 표현식을 계산한 뒤 왼쪽 변수의 값을 바꿉니다.

value = 9;
address-of &

변수의 주소를 얻음

변수가 저장된 위치를 포인터 값으로 꺼냅니다.

int* p = &value;
dereference *

주소가 가리키는 값 접근

포인터를 따라가 실제 값을 읽거나 그 위치의 값을 바꿉니다.

*p = 20;
변수

value

실제 정수 값이 저장된 메모리 칸입니다.

포인터

p

&value로 주소를 저장하고, *p로 그 칸을 다시 봅니다.

핵심

*는 선언에서는 포인터 타입을 뜻하고, 표현식에서는 포인터가 가리키는 실제 값에 접근한다는 뜻입니다.