2009. 8. 20. 14:38ㆍSTUDY !/배워보자 C언어
선언문을 기초로 시작해보자
선언문의 모양을 기억하는가?
자료형 (변수or함수의 이름) 이었다.
자료형이 먼저 나왔으나, 변수에 대해서 먼저 알아보자.
변수(variable)
코딩을 할 때 사용되는 수많은 숫자들이나 문장 혹은 문자들을 임시로 저장할 때 사용되는 것이 바로 변수이다. 변수는 말 그대로 변하는 수이다. A였다가 어느 순간 B가 될 수도 있고 어느 순간에는 C라는 것이 될 수도 있다.
변수라고 이름을 붙이기는 했지만, 정확히 말하면 변수는 메모리 상의 한 지점이다. 왜 메모리상의 한 지점이 되었을까? 컴퓨터에서 임시로 데이터를 저장할 수 있는 곳이 어딜까? 처리속도가 매우 빠르지만, 할 일도 많고 저장공간도 좁아터진 CPU일까? 저장공간은 넘치도록 많지만, 일 처리가 느려터진 보조기억장치(HDD)일까? 아니면 저장 공간도 충분하고 속도도 빠른 메모리일까?
조금 설명을 편파적으로 하기는 했지만, 그런 역할을 충분히 해낼 수 있는 곳은 메모리 밖에 없다. 즉 RAM이다. 그렇다. 변수는 RAM의 한 공간이다.
사람이 쉽게 기억 할 수 있도록, 메모리에 임시로 어떤 수를 저장할 때는 그 지점에 이름을 부여(선언)한 뒤에 숫자를 저장(대입)한다. 그 이름을 가진 저장 공간을 변수라 하고, 그 숫자가 변수의 값이다. 따라서 변수를 이해하기 위해서는 메모리의 구조를 잘 알아야 한다. 메모리 구조는 아래 링크를 참조하길 바란다. 이제 변수가 어느 정도의 공간을 차지하는지 먼저 알아보자. 그 공간을 결정해주는 것이 자료형이다.
/* 변수와 메모리에 대한 더 자세한 사항
( http://cafe.naver.com/cafec/24944 ) ( http://cafe.naver.com/cafec/129579 )
*/
자료형
자료형은 변수의 역할에 따라 크게 세가지 종류가 있다. 문자형, 정수형, 실수형(부동소수형). 그 외에도 열거형, 배열, 구조체 등이 있는데, 조금은 복잡한 내용이므로 나중에 하기로 하자.
문자형
문자형은 문자를 저장하기 위해서 사용되는 자료형이다. 문자를 표현할 때는 ASCII코드나 유니코드를 사용하는데, 그 크기가 1byte이기 때문에 문자형은 1byte의 크기를 갖는다. 문자형에는 char형이 있다. (자세한 설명은 아래 표를 참조하라)
정수형
정수형은 이름 그대로 숫자 중에서도 정수형 자료만을 저장하기 위한 자료형이다. 정수형은 저장공간의 크기에 따라서, short, int, long형이 있다. short형은 2byte, int형은 4byte, long형도 4byte의 공간을 차지한다.
long형은 int형과 똑같은 크기의 저장공간을 갖는다. 그럼 long형은 왜 존재 할까? 과거로 거슬러 올라가면 현재처럼 32bit체제의 컴퓨터가 아닌 16bit컴퓨터 시절이 있었다. 그 당시에는 int형이 16bit. 그러니까 2Byte였다. 따라서 short형은 1Byte였고, Long형은 4Byte로 제 역할을 할 수 있었지만, 컴퓨터의 성능이 올라가면서 int형이 long형만큼의 저장공간을 갖게 된 것이다. 그럼 요즘에 뜨고 있는 64bit체제에서는 어떨까? int형이 64bit 즉 8Byte의 공간을 갖게 된다. 나는 꼭 long형을 쓰고 싶다~ 하면, 숫자 뒤에 L을 붙여주어야 한다. 이 자료가 long형으로 저장된다 라는 것을 인식시켜줘야 하기 때문이다.
실수형
실수형은 숫자 중, 실수형 자료를 저장한다. 실수 라고 하면, 분수, 소수, 정수를 모두 통틀어서 나타내는데, 컴퓨터상에서는 분수표현이 불가능하므로, 모두 소수로 나타낸다. 이때 실수형은 소수점 이하를 나타내기 위해서 부동소수점 표현방식을 사용하는데, 이것이 무엇인지는 책이나 인터넷을 찾아보기 바란다. 제대로 설명해줄 자신이 없...다기보단 귀찮다 -_- ;;
실수형에는 float형과 double형이 있는데, float형은 4byte, double형은 8byte의 크기를 갖는다. 대신에 표현 방식이 특이해, 정수형에 비해 어마어마하게 큰 수를 나타낼 수 있다. 약 2^300 정도까지? float형을 사용할 때는 반드시 숫자 뒤에 float형이라고 나타내 주는 f를 붙여줘야 한다. C언어에서 기본적으로 double형으로 인식하기 때문이다.
각 자료형에는 unsigned 형이 따로 있는데, 부호가 없는 자료형으로 0 이상의 수만을 나타낸다. 따라서 unsigned형은 표현할 수 있는 숫자의 크기가 두 배로 커진다. 여기에 대한 내용은 컴퓨터에서의 2진수 처리방식을 이해하면 쉽게 이해될 것이다.
자료형 키워드 크기 표현범위
문자형 char 1byte -128 ~ 128
정수형 short 2byte -65536 ~ 65535
int 4byte -2147483648 ~ 2147483647
long 4byte -2147483648 ~ 2147483647
실수형 float 4byte -3.4E38 ~ +3.4E38
double 8byte -1.7E308 ~ +1.7E308
자료형을 알았으니 이제 변수를 선언해볼 차례이다. 변수선언은 아까도 말했듯이 ( 자료형 변수명 ) 과 같이 하면 된다.
Ex) int a;
변수에 숫자를 대입하고 싶다면 대입 해주면 된다.
Ex) a = 10; /* a라는 변수가 선언되어 있는 상태라고 가정한다 */
선언과 동시에 숫자를 대입할 수도 있다.
Ex) int a = 10;
물론 변수이므로 나중에 다른 숫자로 바꿀 수 있다. 그때는 다시 대입문을 사용해서 바꾸면 된다.
같은 자료형의 변수는 한꺼번에 선언을 할 수도 있다.
Ex) int a, b, c, d, e;
선언과 동시에 숫자를 대입해도 된다.
Ex) int a = 1, b = 2, c = 3, d = 4, e = 10;
// 문장이 끝나면 항상 세미콜론을 붙이는 것을 잊지 마라!!
더 많은 것을 알고 싶다면 알아서 찾아보도록. 자기가 먹고 싶은 것이 있으면 찾아먹어야 한다. 언제까지고 만들어 줄 수는 없는 법.
...사실 능력이 미천하여 더 만들어 먹여주고 싶어도 그럴 수가 없다. 미안하다.
어찌됐든 변하는 수가 있으면, 변하지 않는 수도 있는 법! 그 수를 일컬어 상수라 한다. 상수는 숫자가 될 수도 있지만, 문자가 될 수도 있다. 일단 상수는 변하지 않는 수라고 알고 있자. 변수에 정의하지 않고 그냥 사용하는 숫자도 값을 바꿀 수 없으므로 상수이지만, 그 상수에도 특별한 이름을 붙일 수가 있다. 상수로 선언하면 되는 것이다. 상수를 만드는 법은 두 가지가 있다. 전 처리기에서 매크로로 정의 하는 법과 상수로 선언을 하는 방법.
매크로로 정의하는 법은 간단하다. 전처리 부분에
#define (상수이름) (상수로 정의될 숫자) 이렇게 정의해 주면 된다.
전 처리 부분이므로 세미콜론은 붙이지 않는다. 어떠한 이름으로 그 숫자를 define해버렸다. 이제 이것은 바꿀 수 없다. 프로그램이 실행되는 처음부터 끝까지 영원히 정의된 숫자를 가지고 있어야 한다.
두 번째로 상수로 선언해버리는 방법. 이것도 간단하다. 변수를 정의할 때, 자료형 앞에 const라는 단어만 붙여주면 된다. 자 실습. 10이라는 숫자를 ten이라는 이름으로 상수선언을 해보자.
( const int ten = 10; )
함수(Function)
함수는 말 그대로 함수이다. A라는 값이 B라는 값이 되기 위해서 거쳐야 할 관문 같은 것? 함수는 선언하는 부분과 정의하는 부분이 따로 존재 한다.
함수선언은 전 처리기와 main함수 사이에 한다.
[자료형] [함수이름] ( [매개변수의 자료형]… ); 형식이다. main함수를 가지고 생각해보자
int main ( )
보다시피 main함수는 정수형으로 선언되어 있고, 매개변수는 없는 상황이다.
main함수 같은 경우에는 프로그램이 실행될 때 같이 실행되는 특별한 함수이니 다른 함수를 가지고 생각을 해보자. 예를 들어 두 개의 정수를 더하는 함수를 sum이라는 이름으로 생성했다고 하자. 이 함수가 되돌려줘야 하는 값은 정수형 값이므로 정수형으로 선언해야 한다.
선언은 전처리 부분과 main함수 사이에 한다.
int sum ( int, int);
선언을 했으니 이제 정의를 해보자. 함수의 정의는 main함수가 끝난 뒤에 한다.
int main()
{
}
int sum(int a, int b)
{
int c = a + b;
return c;
}
sum이라는 함수는 두 개의 인수를 전달받아서 새로운 변수 c에 저장한 뒤, 그 값을 되돌려주는 역할을 한다.
이 함수를 사용하려면, 이렇게 써주면 된다. sum( x, y )
x와 y자리에는 변수가 와도 되고, 상수가 와도 된다.
오늘은 여기까지~
내일 부터는 본격적으로 프로그램에 정의되어 있는 함수에 대해서 알아보자. 오늘도 지루한 이론이었지만 반드시 알아야할 내용이기 때문에 어쩔 수 없는 선택이다.
혹시 뭔가 빠졌다고 생각되면 과감하게 댓글을 남겨달라……
정신없이 써내려가서 뭐라고 했는지 기억조차 나질 않는다. 허거덩
미안….ㅋㅋ
'STUDY ! > 배워보자 C언어' 카테고리의 다른 글
#6. 화면 입력함수 (0) | 2009.08.24 |
---|---|
#5. 화면 출력함수 (0) | 2009.08.21 |
#3. C언어의 구성요소(1) (0) | 2009.08.19 |
#2. C언어의 기초, 기본구조 (0) | 2009.08.18 |
#1. 진수법 (0) | 2009.08.17 |