본문 바로가기
C, C++/문법 정리

[C언어]변수에 대해서 살펴보자

by hseoy 2020. 4. 24.
반응형

[변수에 대해서 살펴보자]

컴퓨터는 많은 내용을 기억해야 한다. 여기서 프로그램 실행 중에 기억해야 될 내용들은 RAM이라는 메모리를 통해서 기억된다.

         

메모리(Memory)는 대략적으로 위와 같은 선형 구조로써 표현할 수 있으며 각 공간마다 주소Address가 부여된다.

변수(Variable)의 엄밀한 정의는 변경 가능한 어떤 값을 저장하는 공간을 말한다. 변수와 상반되는 개념으로 변경할 수 없는 어떤 고유의 데이터를 유지하는 값은 상수(Constant)라고 한다.

various(여러, 다양한) => variety(종류) / variable(변수) => variation(변화)

우리가 일상 생활 속에서 사용하는 많은 프로그램들은 수많은 변수들로 구성되어 있다. 예를 들어 철수가 어떤 게임을 한다고 할 때 그 게임 캐릭터의 레벨, 체력, 공격력 등은 모두 변수로 이루어져 있다.

그렇다면 변수는 어떻게 선언해야 하는 것일까? 그전에 변수 선언 규칙에 대해서 알아야 한다.

- 변수명은 알파벳, 숫자 언더바( _ )로만 구성해야 한다
- 대소문자를 구분한다. (number와 Number는 다른 변수이다.)
    - 비슷한 변수를 대소문자 구분만으로 만드는 것은 좋지 않은 습관으로 되도록이면 변수의 이름에는 의미를 담는 것이 좋다.
        ex) ball, Ball, bAll, baLL (X)
        ex) my_ball, your_ball, her_ball (O)
- 변수명의 첫 글자는 숫자로 시작할 수 없다. 
- 변수명에 공백을 포함할 수 없다.
- 예약어(키워드)를 사용할 수 없다.(int, main, float, include 등)
    - 예약어를 사용하고자 한다면 예약어로만 변수를 구성하지 말고 뭔가를 더 붙혀야 한다.
        ex) main_level

위와 같은 변수 선언 규칙에 맞지 않는 변수를 선언할 경우에 코드는 정상적으로 동작하지 않을 수 있다. 그러니 늘 위와 같은 규칙을 기억하고 있어야 한다.

변수 선언 규칙을 숙지했다면 본격적으로 변수를 선언해보자.

int test = 0;

자세하게 설명하기 전에 먼저 '='의 의미에 대해서 알아야 한다. 수학에서 '='는 '같다'라는 의미를 가지고 있다면 프로그래밍에서는 '대입하다'라는 의미를 가진다.

즉 'a=3'이라는 문장이 있을 때, 수학에서는 'a는 3이다'라고 해석한다면 프로그래밍에서는 엄밀히 따지자면 'a라는 이름을 가진 변수의 메모리 공간에 3이라는 값을 삽입한다'라고 표현해야 한다.

그러면 이제 위 코드를 자세하게 살펴보자. 위 코드는 두 가지 문장으로 나눌 수 있다.

int test;
test = 0;

변수의 선언은 사실 '[자료형] [변수명]'과 같이 사용해서 선언한다. 그렇지만 선언만 하고 바로 사용하게 되면 이상한 값을 사용하게 된다. 왜냐하면 변수가 위치한 메모리에는 기존의 어떤 데이터가 존재하기 때문이다. 이것은 우리의 프로그램에서 어떠한 의미도 갖지 못하기 때문에 '쓰레기 값'이라고 표현한다.

이러한 '쓰레기 값'은 컴파일러마다 알아서 어떠한 값으로 해주는 경우가 있으나 그런 경우에는 혼선이 생길 수 있어 사용하기 전 다른 값을 대입해주는 '초기화'라는 작업을 거친다. 'test = 0;'이라는 부분이 '초기화' 구문이다.

여기서 잠시 그냥 넘어 갔었지만 'int test;'에서 'int'는 integer의 약자로 Data type, 자료형 중 하나이다. 자료형에 대해서는 다음 글에서 좀 더 자세하게 다루는 것으로 하겠다.

2020/04/24 - [C언어] - 자료형에 대해 알아보자

반응형

댓글