프로그램은 앞에서 다룬 정수, 부동소수점 수, 문자 등 어떤 데이터들도 모두 컴퓨터 기억공간에 저장한다.
저장된 값은 필요할 때 프로그램에서 사용된다. 기억공간에는 많은 값들이 저장되어 있고, 특정 값을 사용하려면 그 값이 저장된 곳을알 수있어야 한다.
프로그램은 기억공간에 이름을 붙이고, 이 이름을 통해서 값을 기억공간에 저장하고, 필요할 때 꺼내와서 사용한다.

이렇게 이름을 가진 기억공간을 변수(variable)라 한다.


 

1. 변수와 상수

사용자는 변수와 연관된 기억공간을 생각할 필요 없고, 단지 변수이름을 통해서 값을 저장하고 참조하면 된다.
변수에 저장된 값은 변경될 수 있다. 실제로,
변수라는 용어는 변수에 저장된 값이 변경될 수 있기 때문에 붙여진 이름이다.

반면에, 2장에서 살펴본 정수, 실수, 문자, 스트링 등 데이터의 값 자체를 상수라 한다.


 

2. 변수이름 규칙

1주차 강의에서 설명하였듯이, 문제 분석 단계에서 사용할 변수의 이름이 결정된다.

변수의 이름은 다음과 같은 일정한 규칙에 따라서 지어진다.

   규칙    
 

. 변수 이름은 영문자나 밑줄(_)로 시작해야 하고, 영문자나 밑줄, 숫자 등을 포함.

    그러나 &, $, # 등과 같은 특수기호는 포함할 수 없다.              

. 변수 이름은 임의 길이를 가질 수 있으나, C 컴파일러는 단지 처음 31문자만을 구분한다.

    31문자를 초과하는 부분은 단순히 무시된다.
    따라서 처음 31문자가 같고 그 이후가 다른 두 변수는 같은 변수로 취급된다.

. 변수 이름에 키워드(keywords)를 사용할 수 없다.

    키워드는 C 언어에서 특정 목적을 위해서 미리 예약되어 있다. 
    다음은 C 언어의 키워드를 보여준다.

 

auto
break
case
char
const
continue
default
do

double
else
enum
extern
float
for
goto
if

int
long
register
return
short
signed
sizeof
static

struct
switch
typedef
union
unsigned
void
volatile
while

 
     

 

다음은 올바른 변수 이름의 예이다.

 

 

name
_id
name_of_student
NameOfStudent

다음은 올바르지 않은 변수 이름의 예이다.

   
   변수이름
 

   설명

   
 2Numbers
 
쳣번째 문자가 숫자임
 -students
-는 특수문자임. _와 혼동하지 말 것
 int$number
$는 특수 문자임

C 언어에서 변수 이름에 포함된 대, 소문자는 구분된다는 것을 유의하라. 가령, 다음 세 가지의 변수 이름은 서로 다르다.

    ABC         Abc         abc

변수 이름을 정할 때, 그 변수의 사용 목적을 잘 반영하는 것이 중요하다. 변수 이름을 보고서, 그 변수의 용도를 쉽게 알 수 있다면 프로그램이 보다 이해하기 쉬워질 것이다.

다음 실습창을 통해서 여러분이 변수 이름을 입력하면, 그 이름이 올바른지를 판단한다.


3. 변수 선언문

2장에서 이미 살펴보았듯이, C 언어는 정수, 부동소수점 수, 문자 등의 데이터를 제공한다.데이터의 타입에 따라서 그 데이터가 저장되는 기억공간의 크기가 달라진다. 또한, 기억공간에 저장되어 있는 값의 표현이 정수, 실수, 문자 데이터에 대해서 다르다.

변수는 기억공간의 이름이므로, 기억공간에 저장되는 데이터의 타입에 따라서 변수의 타입을 생각할 수 있다.프로그램의 관점에서 생각해보자. 프로그램에서는 값을 저장하고 사용할 변수를 먼저 생각한다. 이때 변수에 저장될 값의 타입에 따라서 변수의 타입을 생각한다.일단, 변수의 타입이 결정되면, 변수에 저장될 값의 타입은 변수의 타입과 일치해야 한다.


이미 설명하였듯이, 사용자는 변수 이름을 통해서 값을 기억공간에 저장하고 사용한다. 기억공간에 저장될 값은 특정 타입의 값이고, 따라서 사용자는 그 변수에 어떤 타입의 값이 저장될 것인지에 대해서 컴파일러에게 알려주어야 한다.
C 언어는
변수 선언을 통해서 그렇게 한다.즉, C 프로그램에서는 변수를 사용하기 전에 변수를 특정 데이터 타입으로 선언한다.

그러면 이 변수에는 선언된 데이터 타입의 값만을 저장하는 것이 바람직하다.가령, a가 int 타입의 변수이고, 컴퓨터 상에서 int 정수가 32비트 기억공간에 표현될 경우, 변수 a에 저장될 수 있는 값들은 의 범위에 속한 정수들이다.

C 언어에서 변수 선언을 위해서 선언문(declaration statement)이 사용된다. 선언문의 형식은 다음과 같다.

    데이터-타입   변수이름1[, 변수이름2, ....]

위의 형식에서 대괄호 안에 오는 것은 생략가능하다는 것을 의미한다.
데이터-타입은 C 언어에서 제공되는 데이터 타입이고, 변수이름은 프로그래머가 결정한 변수 이름이다.

다음은 변수 선언문의 예이다.

    int a, b, r;
    float f;
    double d;

 

변수 선언문의 효과는 선언된 변수의 데이터 타입의 값을 저장하기에 충분한 기억공간을 할당하게 하고,그 기억공간에 변수이름을 연관시키는 것이다.


변수를 선언해 보자. 여러분이 변수를 선언하면, 적절한 기억공간이 할당되는 것을 볼 수 있다.

 

4. 배정문

프로그램 상에서 변수에 값을 어떻게 저장시킬 것인가? 이를 위해서 C 언어는 배정문을 제공한다.배정문(assignment statement)의 형식은 다음과 같다.

    변수 = 식;

식에는 상수나 변수가 올 수 있으며, 또한 산술식과 같이 피연산자연산자들로 구성될 수 있다. 식의 평가 결과는 값이다.배정문의 의미는 다음과 같다.
동등기호('=')의 오른쪽에 위치한 식이 먼저 평가되고, 평가 결과 값이 왼쪽에 위치한 변수에 할당된다.
즉, 배정문 실행 후에는 변수는 식의 평가 결과 값을 갖는다.변수는 값이 저장될 기억공간에 대한 추상화이다. 변수에 값을 저장한다는 것은 상응 기억공간에 값을 저장한다는 것을 의미한다.

다음은 배정문에 대한 몇 가지 예이다. 

다음 실습창의 애플릿을 통해서 배정문을 실습한다.

top으로... 다음페이지로.. 이전페이지로.. home으로..