[Teach Yourself C] Day. 03 - 데이터 저장하기 : 변수와 상수

Teach Yourself C 3일차, 변수와 상수에 대한 내용입니다.
간단한 내용이지만 개발을 하면서 계속 사용하게 되는 내용이니 잘 숙지하시면 좋겠습니다.



*** 오늘의 학습 내용
 0. 변수와 상수에 대하여 알기.
 1. 변수와 상수를 만드는 방법 알기.
 2. 변수와 상수의 차이 이해하기.


 *** 변수
 변수는 컴퓨터의 메모리에서 이름이 붙은 데이터 저장 위치입니다.
 프로그램에서 변수의 이름을 사용하면 해당 위치에 저장된 데이터를 가리키게 됩니다.

 예를 들어
   int num;

 이렇게 변수를 선언하면, 정수형 데이터를 저장할 수 있는 공간을 확보한 겁니다. 그리고 이 변수에 10 이라는 숫자를 대입해보겠습니다.
   num = 10;

 이제 이 구문이 들어있는 프로그램이 종료할 때 까지, 우리는 num 이라는 변수를 출력하면 10 이라는 결과를 얻을 수 있습니다.
 해당 데이터가 저장된 곳의 주소도 모르고, 데이터의 크기가 얼마나 되는지 몰라도 변수명만 있으면 변수 안에 저장된 데이터를 얻을 수 있습니다.

 때문에 변수의 이름은 굉장히 중요합니다. 변수 이름을 작성하는 규칙이 있을만큼요.
 그 규칙은 다음과 같습니다.

 0. 이름에 알파벳 문자, 숫자, 그리고 밑줄(_) 을 넣을 수 있습니다.
 1. 첫번째 문자는 알파벳 문자여야 합니다. 밑줄도 가능은 하지만 추천하지 않습니다.
 2. 대소문자를 구별합니다. count 와 Count 는 다른 변수를 가리킵니다.
 3. C 언어의 키워드는 변수 이름으로 사용할 수 없습니다. 이 키워드는 아래의 링크로 첨부합니다.
    https://msdn.microsoft.com/ko-kr/library/befeaky0.aspx

 몇 가지 예시를 덧붙입니다.
 0. percent        -> 적합.
 1. item_name    -> 적합.
 2. AnnualProfit -> 적합.
 3. _blood_type  -> 적합하지만 추천하지 않음.
 4. 7years          -> 위법. (첫번째 문자가 숫자)
 5. continue       -> 위법. (C 언어 키워드)

 보통 변수 이름을 작성할 때 사용하는 2가지 방법을 사용합니다.
 0. 단어의 결합부에 대문자를 사용하는 Camel Notation. ex) customLibrary
 1. 단어의 결합부에 밑줄(_) 을 사용하는 방법. ex) custom_library
 저는 개인적으로 밑줄을 선호합니다. 이 글을 보시는 분들도 자신이 선호하는 방식을 사용하시면 되겠습니다.

 - 숫자 변수 유형
 C 언어의 숫자 변수는 다음 두 개의 주요 범주로 나뉩니다.
 0. 소수점 이하 부분이 없는 정수 변수. 이는 또 부호가 있는 정수 변수와 부호가 없는 정수 변수로 나뉩니다.
 1. 소수점 이하 부분이 있는 실수 변수. (부동 소수점 변수)

 - 변수 선언
 변수 선언은 컴파일러에게 변수의 타입과 이름을 알리는 일이라고 생각하면 됩니다.
 선언의 방식은 아래와 같습니다.
   typename varname;

 예를 들면,
   int score;
   double rate;
   char input;
 등 입니다.

 C 언어의 키워드가 아닌 typename 을 사용하고 싶으시다면, typedef 키워드를 써서 유사한 유형을 만들면 됩니다. 하지만 완전히 새로운 유형을 만드는 것이 아니라 기존 유형에 새로운 이름을 하나 더 붙이는 수준의 기능만을 제공합니다.
 typedef 키워드의 사용 방법은 아래와 같습니다.
   typedef int integer;

 이렇게 하면 위 예시로 들었던 int score; 대신
   integer score;

 라고 쓸 수 있습니다.

 - 변수 초기화
 변수는 초기화를 해주지 않으면 쓰레기 값을 갖게 됩니다.
 변수 선언으로 인해 방을 얻었지만, 방 청소를 아직 하지 않아서 지저분한 상태라고 생각하시면 될 것 같습니다. 때문에 사용하기 전에 초기화를 해주시는 것이 좋습니다. 프로그램의 오동작을 막기 위해서라도요.
 방법은 간단합니다. 
   int score;      라고 선언을 했다면,
   score = 10;    라고 값을 대입해주면 됩니다.


 *** 상수
 상수 또한 변수와 마찬가지로 프로그램에서 사용하는 데이터 저장 위치입니다. C 언어에는 두 가지 종류의 상수가 있는데, 각각 고유한 용도로 사용됩니다.
 변수와 차이점이 있다면 프로그램 실행 중에 값이 변하지 않는다는 점 입니다.

 - 리터럴 상수
 리터럴 상수는 필요할 때 마다 소스 코드 내에 정확하게 입력되는 값 입니다.
   1, 'a', 2.5, "abc"
 등으로 작성하게 됩니다.

 - 기호 상수 또는 심볼릭 상수
 기호 상수는 const 키워드와 #define 명령어를 사용해서 만들 수 있습니다.
 const 키워드의 사용 방법은, 변수 선언과 비슷합니다.
   int max_length = 10;

 라는 정수형 변수를 선언하고 동시에 초기화를 합니다.
 이 경우 max_length 는 정수형 변수입니다.
 하지만 앞에 const 를 붙이면 max_length 는 수정할 수 없는 상수가 됩니다.
   const int max_length = 10;

 이제 max_length 에 새로운 값을 대입하려고 하면 컴파일러는 에러라고 표시합니다. 앞에서 말했듯 상수는 변하지 않는 값 이기 때문입니다.

 #define 명령어의 사용 방법은 다음과 같습니다.
   #define  상수이름  값

 간단하게 예를 들어보면,
   #define MAX_LENGTH 10

 이렇게 표현할 수 있습니다.


 *** 요약
 C 언어의 변수와 상수에 대해서 공부했습니다.
 0. 변수는 변하는 값 입니다. 선언하는 방법은  typename varname;  입니다. 변수는 선언 후 초기화 해주셔야 합니다.
 1. 변수 이름을 만드는 규칙을 숙지하셔야 합니다.
 2. 상수는 변하지 않는 값 입니다.
 3. 상수는 리터럴 상수와 심볼릭 상수가 있습니다.
 4. 심볼릭 상수는 const 키워드를 사용하거나 #define 명령어를 사용해서 만들 수 있습니다.


 *** 변수와 상수의 사용을 보여주는 예제
 간단한 예제를 통해서 변수와 상수의 사용을 살펴보겠습니다.


 특별히 주석을 달지 않아도 될 만큼 간단한 프로그램입니다. 현재 자신의 몸무게를 파운드로 입력하면 gram 으로 변경해서 출력해주고, 자신의 태어난 해를 입력하면 2000 년도에는 몇 살이었는지 출력해주는 프로그램입니다.

 결과를 확인해보지요.


 네, 생각한대로 결과가 나왔네요.



 3장의 내용은 여기까지입니다.
 읽어주셔서 감사합니다.

CloudD

예술하는 프로그래머, 코딩하는 예술가

댓글 쓰기

다음 이전