변수에 대해 알아보고, 자료가 저장되는 메모리를 설명합니다. 또한 각각의 변수들이 어떤 규칙을 갖고 얼마 큼의 메모리를 할당하게 되는지도 알아보겠습니다.
변수에 대하여
int x , y, sum;이라는 의미는 무엇일까요? 먼저 프로그램의 내용에서 x, y, sum이라는 것들을 사용했는데 이를 우리는 변수(variable)라고 부르고 있습니다. 즉, "변할 수 있는"이라는 뜻입니다. 변수란 프로그램 중에서 어떤 값을 저장해야 할 경우가 자주 발생이 됩니다. 예를 들어 위의 프로그램에도 마찬가지로 두 수를 더하기 위해선 두 수를 어디엔가 저장을 해 두어야 할 것이고 출력으로 합의 결과를 출력하기 위해서도 합의 값을 어딘가에는 저장을 해두어야 불러다 쓸 수 있을 것입니다. 그러기 위해서 20이라는 값은 x라고 부르는 곳에 저장을 하고 30이라는 값은 y라고 부르는 곳에다가 저장을 합니다. 또한 20과 30을 더한 결괏값 50도 어디엔가 저장해야 하는데 이 장소를 sum이라고 부르겠다는 의미입니다. 그렇다면 결국 변수라는 것은 프로그램에서 필요로 하는 값들을 잠시 저장하기 위한 공간을 말하는 것이며 이를 컴퓨터 용어로 표현한다면 자료를 저장하기 위한 메모리(memory)의 어드레스(address)를 쉽게 다루기 위한 별명으로 변수명이 사용되는 것입니다. 실제로 우리들이 살고 있는 집에도 주소가 있습니다. 이 주소는 우리가 살고 있는 공간의 위치를 나타내기 위해 부여된 것이고 그렇다고 옆집이나 자기 집을 표현하는데 옆집의 주소를 이야기하거나 자신의 집을 주소로 표현하지 않을 것입니다. 단지 옆집은 "누구네 집"이라고 표현할 것이고 자신이 살고 있는 집은 "우리 집"이라고 표현할 것입니다. 여기서 표현한 "누구네 집" 또는 "우리 집"에 해당하는 것이 바로 변수명이 되는 것입니다.
자료가 저장되는 곳을 메모리라고 바로 위에서 설명을 했는데 이 메모리는 컴퓨터의 CPU 내에 있는 레지스터(register)라는 메모리가 될 수 있고 램(RAM)이라고 부르는 반도체인 전자소자로 구성된 메인 메모리가 될 수도 있습니다. 그렇다면 4번째 줄의 맨 앞에 위치한 int라는 의미는 무엇이겠습니까? 이것은 x, y, sum이라는 변수를 선언하기 위한 것입니다. int라는 것은 integer의 약자로 정수형이라는 뜻으로 x, y, sum이라는 변수를 정수형 자료들을 저장하기 위한 공간으로 사용하겠다는 의미입니다. 이와 같이 자신이 사용한 변수를 컴퓨터에게 알려 주어야만 하는데 이것은 C 언어의 규칙이며 이를 변수의 선언이라고 합니다.
이러한 정보를 컴퓨터에게 알려주어야만 이후에 나타나는 x, y, sum이라는 문자들을 컴퓨터가 인식을 하고 이용을 할 수 있는 것입니다. 만약 이러한 정보를 알려주지 않으면 컴퓨터가 프로그램을 번역하는 과정에서 알지 못하는 문자들이라는 의미로 "Undefined symbol"이라는 에러 메시지를 발생시키고 번역 작업을 중단해 버리게 되는 것입니다.
int로 선언된 x, y, sum 은 메모리의 공간에 각각 2바이트(byte)의 크기로 배당을 받게 됩니다. 이런 후 프로그램에서 어떤 값을 메모리에 저장하기 위해 그 위치를 매번 확인하지 않고도 선언된 변수의 이름을 이용해 원하는 자료를 저장할 수 있게 되는 것입니다. 그러면 왜 2 바이트의 공간이 각각 변수에 배당되는가는 일단 C언어의 규칙이라고 이해하여야 합니다. 즉 int 다음에 나오는 x, y, sum이라는 변수들의 공간에 대한 크기는 각각 2바이트 공간이 배당되는 것입니다. 이와 같이 자료의 형을 규정하는 데 사용되는 말은 int 이외에도 char, float, double 등이 사용됩니다. char은 문자 자료를 저장할 변수를 선언하는 데 사용되고 float는 소수점을 갖거나 지수 형태로 표현되는 실수형 자료를 저장하는 데 사용되며 double은 실수형 자료가 아주 작은 수이거나 아주 큰 수를 저장하기 위한 변수를 선언하는 데 사용됩니다. 각 자료형에 의해 배정되는 변수의 공간 크기는 char형은 1바이트, float는 4바이트, double형은 8바이트의 크기입니다.
마지막으로 printf 함수에 대해 알아보겠습니다. printf 함수의 매개 변수는 문자열이었습니다. 따라서 이중 인용부 호안에 원하는 문자열을 적당하게 배치하여 실행시키면 기술한 방식대로 그대로 출력이 됩니다. 그러나 수치를 출력하고자 할 때 숫자의 앞 뒤에 원하는 만큼 공백을 둔다던가 출력될 숫자의 자릿수를 지정하고자 할 때는 C언어에서 제공하고 있는 규정에 맞게 기술하여야 할 것입니다.
댓글