프로그래밍 언어라면 대부분 변수와 자료형 개념이 있다. C 언어도 마찬가지지만, 차이점은 이 개념들이 메모리
와 아주 밀접하게 연결돼 있다는 점이다.
C에서 변수를 선언하는 순간, 메모리 상의 특정 공간이 예약된다. 예를 들어 int a = 10; 이라는 코드를 작성하면, a라는 이름으로 4바이트짜리 공간을 확보하고 그 안에 10이라는 값을 저장한다. 이때 중요한 건, 변수 이름은 실제 값이 저장된 메모리 주소를 가리키는 ‘별명’일 뿐이라는 점이다.
언어마다 다르지만, 비교적 최근에 개발된 다른 언어에서는 변수에 어떤 값이든 쉽게 넣을 수 있지만, C에서는 미리 자료형을 명확히 지정해야 한다. 그 이유는 메모리를 얼마나, 어떻게 써야 할지 컴파일러가 판단하기 위해서다.
위에서는 32bit 시스템을 예제로 한 내용이다. 16bit에서는 int가 2바이트며, 각 시스템에서 자료형이 의미하는 크기는 다를 수 있다.
C는 개발자가 직접 메모리를 다루는 언어라서, 자료형이 곧 메모리 구조에 대한 설계도 역할을 한다. 잘못된 자료형을 쓰면 프로그램 동작이 꼬이거나 예측할 수 없는 결과를 낼 수 있다. C를 처음 접한 사림이라면, 이게 무슨 말인지 이해가 안되겠지만, 일단은 C에서는 메모리 구조 설계, 관리가 매우 중요하다는 것만 인지해도 좋다.
int a = 10;라는 선언은 단순한 코드 한 줄 같지만, 내부적으로는 다음과 같은 일이 벌어진다:
@nullvuild