2. 변수(variable) 의 의미, 선언과 초기화, 저장 :: YJcode

변수란 무엇인가? 말 그대로 변하는 수. 즉, 고정되지 않은 수를 변수라고 말한다.

 

하지만 프로그래밍을 하는 여러분은 앞으로 프로그래밍적인 측변에서 이에 대해 접근해야 할 것이다.

 

 

프로그래밍 언어에서 변수란, 어떤 수, 문자, 혹은 위치정보를 저장하는 저장 공간을 의미한다.

 

앞으로는 변수 'A'를 선언한다 와 같은 문구를 많이 접하게 될 것인데, 여기서 변수 'A'를 선언한다.

라는 말은 다르게 말하면 무언가를 담을 수 있는 이름이 'A' 인 저장공간을 만들겠다. 라고 해석하면 되겠다.

물론 이게 완벽하게 정확한 의미는 아니다. 다만 지금은 이렇게 알고 있고, 차후 각자 자신만의 정의를 내리며 다시한번 정리를 해 나가면 되겠다.

 

그렇다면 변수는 어떤식으로 사용되는지 알아보자.

 

변수를 사용하려면 변수가 있다는 것을 컴퓨터에게 알려주어야 한다. 이것을 "변수를 선언한다." 라고 표현하는데,

C언어에서는 변수선언에 대한 규칙이 미리 정해져 있다. 아래가 변수를 선언하는 가장 기본적인 형태이다.

 

  • 변수타입 + 변수이름 + ;

변수 타입은 int, long, float, double 과 같은 변수의 형태를 말하고, 변수이름은 그 변수를 다른 변수와 구분하기 위해 사용되는 닉네임이라고 보면 된다. 그리고 ;를 붙여주는데, ';'는 C언어에서 명령이 하나 끝났음을 컴파일러에게 알려주는 역할을 한다. 예를 들어서 변수를 하나 선언해보겠다.

 

  •  int number;

 

int 는 변수타입, number는 변수이름이 되겠다.

 

변수타입은 여러 종류가 있고 앞으로 다루게 되겠지만 당장은 이러한 형태가 있다는 것만 알아도 충분하다.

 

이렇게 변수를 선언하고 나면 필수적으로 필요한게 변수 초기화이다.

위의 변수선언 기본형은 변수를 사용하겠다는 것을 표현한 것으로, 이문장을 만나면 컴파일러는 차후 실제로 만들 프로그램에 변수공간을 할당(배정)해 주게 된다. 이때 어느 공간이 할당이 될지는 알 수 없으며, 이전에 누가 사용했는지는 더더욱 알수없다.

 

지금 할 설명은 아니지만 조금 자세히 설명을 하자면, 변수가 어디에 저장되는지 혹시 알고 있는가?

알고 있다면 좋겠지만 모르고 있다면 가볍게 듣고 넘어가길 바란다. 만약 위와 같이 int number라는 소스코드가 포함된 실행파일을 실행하면 프로그램(프로세서)는 메모리공간에 number라는 이름의 공간을 만들어 주는데, 이전에 누가 사용했는지, number라는 변수공간안에 뭐가 들어있는지 아무도 알지 못한다. 왜냐하면 그전에는 사용하지 않던 공간을 사용하는 것이므로 관리가 되지 않고 있던 메모리 공간이기 때문이다. 만약 이 공간이 일정한 값으로 정해져 있다면, 컴퓨터는 절대 지금처럼 빠르게 동작할수 없다는 사실을 알고 있어야 한다. 그래서 현대 컴퓨팅 시스템은 메모리를 사용하기 전에 정리하기 보다는 사용을 할때 필요한 놈이 직접 정리하도록 암묵적으로 약속하였고, 그렇게 실행되고 있다. 그것이 효율적이기 때문이다.

 

그렇기에 변수를 선언하면, 그 변수에 담겨있는 내용물은 아무 의미없는, 알수없는 값이 들어 있으며, 이것을 흔히 쓰레기값, 혹은 NULL값 이라고 부른다. 이 NULL값을 우리가 초기화해야 하며, 이것은 앞으로 코딩하는데 있어서 필수적으로 습관을 들여놓기를 바란다. 그렇다면 초기화는 도대체 무엇을 말하는 것인가?

 

  • 초기화는 NULL값을 임의의 값으로 처음 지정해주는 것을 말한다.
  • 변수이름 = 내용물;
  • number = 100;

즉, number라는 변수에 100을 처음으로 저장해주는 것을 초기화라고 부르는 것이다. 이 초기화하는 과정은 이후에도 다시 적용할 수 있으며, 이를 초기화한다고 하지 않고 변수에 값을 저장한다라고 표현한다. 정리하자면.

 

  • 변수는 선언을 하면 처음에는 값이 정해지지 않은 상태이다.
  • 변수에는 언제든 값을 저장할수 있다.
  • 이 값을 저장하는 행동은 몇번이고 반복할수있다.
  • 최초로 값을 저장하는 행위를 변수를 초기화한다. 라고 표현한다.
  • 변수를 선언하면, 초기화는 꼭 해주자.

 

보통은 초기화는 변수의 선언과 동시에 많이 사용하며 그럴때는 아래와 같은 형식을 따른다.

 

  • 변수타입 + 변수이름 + 내용물 + ;
  • int number = 100;

이러한 형식을 변수선언과 함께 초기화한다. 라고 표현하기도 한다.

 

아래 코드를 작성해서 빌드하고 눈으로 직접 확인해보기를 바란다.

 

#include <stdio.h>

int main() {

    int number;
    int number2 = 100;

    printf("number = %d, number2 = %d \n", number, number2);

    nunber = 200;

    printf("number = %d, number2 = %d \n", number, number2);

    number2 = 500;

    printf("number = %d, number2 = %d \n", number, number2);
    
    return 0;
}

 

차이가 확인이 되는가?

이 코드가 무엇을 전달하고자 했는지 의미를 모르겠다면 이 글을 위에서 다시한번 살펴보기를 바란다.

'C언어 > 문법' 카테고리의 다른 글

1. 맛보기 - hello, world 출력하기(Visual Studio 2019)  (0) 2019.09.27

+ Recent posts