기타 강좌

3-2변수의 종류

변수는 메모리의 위치를 기억한다고 했다. 그러나 실제로 컴파일러가 변수를 참조할 때는 메모리 번지를 참조하는 것이 아니라 번지에 기억된 값을 참조한다. 예를 들어 Num=56이라는 대입문이 있다고 하자. 컴파일러는 이 명령을 다음 둘 중 어떤 것으로 해석할까?

 

Num이 가리키는 번지를 56으로 바꾸어라.

Num이 가리키는 번지에 들어있는 값을 56으로 바꾸어라.

 

상식적으로 생각해 봐도 후자가 맞다. 변수는 내부적으로 번지에 대한 위치를 가리키지만 컴파일러는 변수를 번지에 기억된 값으로 참조한다. 즉, 변수의 실체는 번지가 아니라 그 번지에 기록된 값이다. 컴파일러가 변수를 통해 값을 참조하기 위해서는 단순히 메모리 위치만 알아서는 안된다. Num이 1234번지를 가리키고 있다고 할 때 "Num을 읽어라"는 명령을 내리면 1234번지부터 어디까지를 읽어야 하는 것인지를 알아야 하므로Num의 길이가 필요하다.

또한 읽은 값을 어떻게 해석할 것인가도 알아야 한다. 메모리에는 0과 1만 나열되어 있으므로 위치와 길이 정보만으로는 값의 형태를 파악할 수 없다. 1234번지에 들어있는 값이 정수인지 실수인지 또는 구조체인지 등의 정보가 있어야 컴파일러가 이 값을 정확하게 해석할 수 있다. 정수와 실수는 값의 형태가 다르며 메모리에 기록되는 방식도 당연히 다르다. 그래서 변수로부터 값을 정확하게 읽으려면 변수의 형태에 대해서도 알아야 한다.

변수는 저장된 메모리 위치와 함께 길이와 형태에 대한 정보를 가지는데 이런 변수의 특성을 타입(Type)이라고 한다. 타입이란 컴파일러가 변수를 읽고 쓰는 방법에 대한 정보이며 타입에 따라 Num은 정수형 변수이고 Average는 실수형 변수임을 알 수 있게 된다. C언어는 아주 많은 타입을 지원한다. 일단 어떤 타입들이 있는지 정리해 보자. 크게 기본형과 유도형으로 나누어진다.

 

구분

타입

설명

기본형

정수형

정수

문자형

문자

실수형

실수

열거형

가능한 값들에 대한 나열형

void

타입이 정해지지 않은 자료형

유도형

배열

같은 타입의 자료 집합

구조체

다른 타입의 자료 집합

공용체

메모리를 공유하는 자료 집합

포인터

대상체의 번지를 가리키는 타입

함수형

함수의 번지를 가리키는 타입

 

기본형이란 하나의 단일 값을 기억하는 단순한 타입이다. 정수값 하나를 기억하는 정수형이 가장 직관적으로 이해하기 쉽고 사용 빈도도 높다. 정수형 변수는 1234나 38같은 정수값 하나를 저장할 수 있고 실수형 변수는 3.14나 1.5 같은 실수값 하나를 저장할 수 있다. 기본형은 전부 수치를 저장한다는 점에서 공통적이다.

유도형은 기본형으로부터 만들어지는 타입이다. 같은 종류의 변수 여러 개를 모으면 배열이 되고 다른 종류의 변수 여러 개를 모으면 구조체가 된다. 유도형은 다소 복잡하기 때문에 이 장에서는 소개만 하고 관련 장에서 다시 상세하게 다룰 것이다. 각 타입별로 한 장 이상씩을 차지할 정도로 유도형은 복잡하다.

Comment '2'
  • ?
    Cin 2009.06.13 23:00
    기본형, 정수형과, 실수 형한테가면, , , 게임 많은데 ㅠ.ㅠ
  • ?
    Last H 2009.06.14 19:37
    ???? 게임이 많다뇨??;

List of Articles
분류 제목 글쓴이 날짜 조회 수
Vegas Pro 베가스 강좌 목록 아방스 2017.09.28 886
파이널컷X 파컷 강좌 목록 아방스 2017.06.18 757
기타 [파이썬] 리스트(list) )5( 4 - 하늘 - 2009.09.07 3140
기타 프로그래밍 스킴 Scheme 2 프로그래밍한 걸 exe파일 만들어 배포하기! 2 file 정체불명 2010.10.02 3156
C언어 C언어 기초 - 1. 개요 5 완폐남™ 2011.08.01 3183
기타 캐릭터 생성에 도움 되는글? 10 아방스 2008.08.26 3222
C언어 [C언어] printf()함수의 변환 문자 1 [Dark].Angel 2009.01.14 3242
기타 게임 기획에 관한 기법들 3 아방스 2010.09.15 3251
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Web Buttons Vector Graphic file 아방스 2011.12.07 3251
시네마4D [플러그인] HDRI Light Kit Pro version 1.5 file 아방스 2010.11.22 3256
기타 PCSX2 자체 캡처기능으로 캡처한 동영상 인코딩하기 file Alkaid 2012.09.09 3257
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - PSD Download Buttons file 아방스 2011.12.07 3279
기타 오류해결법 2-비스타로 알피지 만들기 XP게임하기 3 21thcentuary 2008.09.29 3324
에프터 이펙트 붓 칠해지는 느낌의 자막 1 file 아방스 2011.02.27 3340
기타 - 하늘 -의 리눅스 book! [ <2>리눅스를 배우려면?][수정] 8 file - 하늘 - 2009.08.01 3357
시네마4D 시네마4D R12 버전 한글 도움말 파일 아방스 2011.04.16 3362
기타 그림판으로 아이콘 만들기 4 검은별 2009.07.13 3395
XpressEngine 댓글 알림 기본 체크 하기. 아방스 2012.01.04 3395
시네마4D [나무 의자 만들기] Model A Wooden Chair In Cinema4D 1 file 아방스 2011.04.18 3404
어도비 프리미어 [프리미어프로] 시계 애니메이션 만들기 file 아방스 2017.01.08 3408
기타 게임 엔진 中 [렌더링 엔진] 비교 3 아방스 2011.10.24 3425
기타 해커스쿨 F.T.Z서버에 대해 궁금하신 분들은 글올려주세요... - 하늘 - 2009.08.03 3428
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Next
/ 19