변수의 속성 여섯
int count = 3;
이 한 줄로 정해지는 것은 몇 가지일까?
화면을 누르면 다음 장으로 넘어갑니다
변수
명령형 언어의 중심은 변수입니다
1강에서 본 대로 명령형 언어는 메모리와 CPU로 된 컴퓨터를 본떴고, 그 중심에 변수가 있습니다. 변수는 메모리 칸에 붙인 이름입니다. 칸마다 위치 번호인 주소가 있지만, 프로그램은 주소 대신 이름으로 칸을 다룹니다.
주소 숫자는 예시 값입니다. 교재는 메모리 칸을 메모리 셀(memory cell)이라고 부릅니다.
속성 여섯
변수 하나에 여섯 가지가 붙습니다
변수는 여섯 가지 속성(attribute)으로 정해집니다. 이름, 주소, 값, 타입, 수명, 스코프입니다. 이 강은 이 여섯이 언제 정해지고 어디서 보이는지를 따라갑니다.
예시입니다. int는 정수 타입이고, 타입은 1강에서 본 값의 종류입니다. 수명과 스코프는 5편과 7편에서 자세히 봅니다.
주소
이름은 하나여도 칸은 바뀝니다
주소(address)는 변수가 자리 잡은 메모리 칸의 위치입니다. 이름이 같아도 주소는 실행 중에 달라질 수 있습니다. 함수가 불릴 때마다 그 안의 변수가 새 칸을 받기 때문입니다.
예시입니다. int n; 은 정수 변수 n을 만든다는 뜻이고, 주소 숫자는 예시 값입니다.
주소
거꾸로, 한 칸에 이름이 둘
서로 다른 두 이름이 같은 메모리 칸을 가리키면 앨리어스(alias)라고 합니다. 1강에서 본 앨리어싱이 이것입니다. 포인터, 참조 변수, 공용체가 앨리어스를 만듭니다. 한 이름으로 값을 바꾸면 다른 이름으로 읽는 값도 바뀌어 읽기 어려워집니다.
포인터는 값이 든 메모리 칸의 위치를 담는 값입니다. 공용체는 5강에서 다룹니다.
값
왼쪽 x는 칸, 오른쪽 x는 값
값(value)은 변수의 칸에 든 내용입니다. 대입문 x = x + 1에서 오른쪽 x는 칸에 든 값을, 왼쪽 x는 값을 넣을 칸의 위치를 뜻합니다. 앞의 것을 r-value, 뒤의 것을 l-value라고 합니다.
대입문은 변수에 값을 넣는 문장입니다. l과 r은 왼쪽(left)과 오른쪽(right)에서 왔습니다. 값 5는 예시입니다.
타입
타입은 범위와 연산을 정합니다
타입(type)은 변수가 가질 수 있는 값의 범위와, 그 값에 할 수 있는 연산을 정합니다. 소수 타입은 얼마나 정밀하게 담는지도 정합니다.
값 하나가 실제 칸 여러 개를 차지해도 변수의 칸 하나로 봅니다. 이것이 추상 메모리 셀(abstract memory cell)입니다. 표와 칸 수 4는 C를 기준으로 든 예시입니다.
다음 편