[C 강좌 ] 변수

Windows/TIP 2021. 2. 9. 23:54
728x90

프로그래밍에 있어 변수(Variable)란, vary와 able의 합성어로 '내용을 다양하게 변화시킬 수 있는 것'이라는 뜻을 가져요.

다시 말해 변수는 어떤 값을 담을 수 있는 '그릇'이라고 볼 수 있어요.

마치 처음엔 그릇에 김치를 담았다가 실증이나면 그릇의 김치를 치우고 다시 나물을 담을 수 있듯, 변수도 변수가 가진 값을 프로그래머가 원하는 때에 바꿀 수 있는 거에요.

또한 '그릇'이므로 변수의 크기가 커질수록, 즉 변수가 메모리에서 차지하는 공간이 클수록 많은 것을 담을 수 있고 어떤 변수이냐에 따라 담는 내용도 달라질거에요.

 

아래는 C에서 사용하는 변수와 크기, 그리고 그 변수가 담을 수 있는 범위를 표로 나타낸 것이에요.

 변수 타입  크기  범위
 short  2Byte  -32768 ~ 32767
 int  4Byte  -2147483648 ~ 2147483647
 long  4Byte  -2147483648 ~ 2147483647
 unsigned int  4Byte  0 ~ 4294967295
 unsigned long  4Byte  0 ~ 4294967295
 float  4Byte  1.175494351E-38 ~ 3.402823466E+38
 double  8Byte

 2.22507385072014E-308 ~ 1.7976931348623158E+308

 char  1Byte

 1Byte를 차지하는 문자 하나.

 단, 한글은 2Byte를 차지하므로 배열을 사용한다.

 

변수 중 short, int, long, unsigned int, unsigned long은 '정수형'이에요.

정수형의 변수는 오직 정수만을 담을 수 있어요. 문자열이나 소수 등은 정수형 변수에 넣을 수 없답니다.

 

그리고 float, double은 '실수형'이에요.

실수형의 변수는 정수는 물론이고 소수까지 담을 수 있어요. 하지만 문자열은 넣을 수 없어요.

 

char는 '문자형' 변수에요.

문자형 변수는 문자를 담을 수 있는 변수에요. 문자가 아닌 수는 문자 상태로 바꿔야만 담을 수 있어요.

예를 들어, char 타입의 변수 A가 있을 때 A에는 "A" 또는 "B" 등의 문자를 넣을 수 있어요.

하지만 1, 2 등의 수는 넣을 수 없답니다. 이럴 때엔 수를 문자열로 바꾸어 "1", "2" 등의 형태로 넣어주셔야해요.

참고로 C에서는 큰따옴표(")의 유무로 문자열인지 판단해요.

그러므로 큰따옴표가 있는 "A"는 문자열이지만 큰따옴표가 없는 A는 문자열이 아닌 것이 된답니다.

 

또한 정수형 변수들 중 앞에 unsigned이 붙은 것은 '음수가 없다'라는 뜻이에요.

unsigned가 붙지 않은 변수는 음수와 0, 그리고 양수를 담을 수 있는 것에 반해, unsigned가 붙은 변수는 0과 양수만 담을 수 있어요. 또한 음수를 담지않는 만큼 담을 수 있는 양수의 범위가 더 크답니다.

 

변수를 사용할 때에는 먼저 변수를 '선언'해주어야해요.

'선언'은 선언된 변수의 타입에 따라 메모리에 그 공간을 확보 해 놓는 것이므로 사용하기 전에 반드시 해야하는 작업이에요.

변수의 선언은 아래와 같이 할 수 있어요.

 

  변수 타입 변수 이름;

ex) int ABC;

 

마지막에 붙는 ;는 C에서 하나의 코드가 끝났음을 알리는 용도에요.

;로 코드의 끝을 알리지 않으면 C는 코드의 끝난건지 파악하지 못해 에러를 일으켜요.

 

변수 타입은 위쪽에서 언급한 바와 같이 int, long, char 등을 뜻해요.

어떤 변수 타입으로 선언했느냐에 따라 메모리에서 적당한 크기를 선언한 변수 이름 앞으로 할당 해 주어요.

 

변수 이름은 변수를 구분하여 사용하기 위해 쓰는 것인데, 아래의 표와 같은 네가지 경우를 제외하고는 프로그래머가 자유롭게 지정할 수 있어요. 하지만 효율성을 생각해서 무엇에 사용되는 변수인지를 알 수 있도록 정하는 것이 좋아요.

 

 1. 변수 이름은 대소문자를 구분한다. ex) 변수 ABC와 변수 abc는 서로 다른 변수이다. 

 2. 변수 이름은 영문자 또는 밑줄 문자(_)로 시작되어야한다.

 3. 변수 이름에는 공백을 사용할 수 없다.

 4. 영문자, 밑줄 문자, 숫자만 사용할 수 있다.

 5. 예약어를 사용할 수 없다. (예약어 = 프로그래밍 언어에서 이미 문법적으로 사용되는 단어들) ex) return, int, if

 

그리고 C는 변수의 선언이 소스 전체 또는 함수 블록의 가장 앞쪽에서 이루어져요.

이해를 돕기 위해 아래의 표를 보아주세요. 이것은 C의 일반적인 소스 구성이에요.

 

 #include <헤더 파일>

 선언문; 

 

 void main() {

     선언문;

     명령문1;

     명령문2;

     .....

     명령문3;

 }

 

 void 함수() {

     선언문;

     명령문1;

     명령문2;

     .....

     명령문3;

}

 

우선 C에서는 각 코드의 끝을 ;를 이용해서 알리고 {와 }를 이용해서 코드의 집합을 구분해요.

그리고 {와 }로 분리된 코드 집합을 '블록'이라고 칭하는데 이런 함수 블록들이 모여서 하나의 소스를 구성하는 거에요.

함수 블록들의 가장 첫 문장들을 보세요. void main(), void 함수()는 해당하는 함수 블록의 이름(main, 함수)과 타입(void)이에요. 함수는 다음 기회에 다루도록 하고, 우선 함수 이름 바로 다음에 나오는 코드를 보세요. 바로 선언문이에요.

이처럼 선언문은 함수 블록의 가장 처음 부분에서 이루어져야하며, 함수 블록 내의 어떠한 문장보다 먼저 나와야해요.

 

이번엔 함수 블록이 아닌, 소스 전체의 가장 앞 부분을 보세요.

#include와 선언문이 위치한 것을 알 수 있어요.

#include는 '선행처리기 지시자'인데, 역시 나중에 다루기로하고 일단은 선언문을 보아주세요.

함수 블록에서와 마찬가지로 소스 전체에서도 선언문은 선행처리기 지시자와 함께 소스 앞쪽에 위치해요.

 

이렇게 변수 선언은 소스 또는 함수 블록의 가장 앞에서 이루어져야하고, 그 이외의 곳에서 선언되면 에러를 일으켜요.

또한 변수는 선언된 위치에 따라 지역 변수와 전역 변수로 구분되어요.

 

먼저 지역 변수는 하나의 블록 내에서 선언된 변수로, 그 블록 내에서만 변수를 사용할 수 있어요.

전역 변수는 블록들의 밖, 즉 소스의 앞부분에 선언된 것으로 소스 전체에서 사용할 수 있어요.

 

그리고 사용되는 범위에 따라 정적 변수와 외부 변수로 분류되기도 하는데, 정적 변수는 그 변수가 선언된 블록이 끝나더라도 메모리에서 사라지지않아요. 정적 변수로 선언할 때에는 변수 타입 앞에 static을 넣으시면 되어요.

ex) static int A;

 

외부 변수는 다른 소스 파일에서도 변수를 사용할 수 있어요.

C 프로그램은 두 개 이상의 소스 파일 묶음으로도 이루어질 수 있는데, 이 때 외부 변수를 사용하면 변수가 선언된 소스 파일은 물론, 그 소스 파일과 연결된 다른 소스 파일에서도 변수를 사용할 수 있어요. 외부 변수 선언은 extern을 변수 타입 앞에 넣으시면 되어요.

ex) extern int A;

 

반응형

'Windows > TIP' 카테고리의 다른 글

제어판 제어(비활성화) 방법  (0) 2021.02.09
VB 기본 컨트롤 이해하기  (0) 2021.02.09
윈도우 10 숨겨진 기능 9가지  (0) 2021.02.09
VB 기본용어 정리  (0) 2021.02.09
와이어 샤크 사용방법  (0) 2021.02.09