본문 바로가기
공부정리 및 기록/[C언어] 프로그래밍

2. 자료형과 선행처리기

by 9월스튜디오 2020. 5. 28.

가. 상수와 변수

1. 상수

1) 자료형 : 사용하는 자료의 형태.

- 프로그램에서 사용하는 자료의 형태로 상수와 변수로 구분하여 사용.

- 프로그램에서 자료 처리를 위해서는 자료 생성과 저장,처리과정 필요

- C프로그램은 수많은 명령어와 자료로 구성됨.

- 이들 자료의 정확한 처리와 효율적인 활용이 필요

- C언어는 여러가지 종류의 자료형을 지원

2) 상수

- 항상 고정된 값을 갖는 자료

- 값이 한번 정해지면 프로그램 도중 그 값을 변경이 불가함.

(1)정수형상수 : 10진수, 8진수, 16진수로 표현,

(2) 실수형 상수 : 부동소수점 형 상수, doble형을 기본 자료형으로 사용

(3) 문자형 상수

- 단일 인용부호 (' ')로 묶여 있는 1개의 영문자나 숫자문자

- 내부적으로는 해당문자의 ASCII 코드값이 사용

- 예를 들어 'A'는 내부ㅈ적으로 65(ASCII코드값)가 된다.

- Escape 문자 : 키보드에 나타나 있지 않은 문자.

(4) 문자열 상수

- 이중 인용부호 (" ")로 묶여 있는 복수개의 영문자나 숫자문자

- 기억공간에 보관될 때는 문자열 끝에 null 문자 (\0)가 추가

- 예) 문자열 "SEOUL KOREA"의 기억공간 보관 형태 -> SEOUL(_)KOREA(\0) = 공백과 null까지 12개의 기억공간 소요.

2. 변수(variable)

1) 변수

- 변할 수 있는 값

- 프로그램에서 변수는 프로그램 실행 도중 변할 수 있는 값이 저장되는 기억공간을 의미.

- 예) i=10;은 i는 변수명이고, 10이란 값을 i라는 이름으로 정의된 기억공간에 저장한다는 의미.

- 이러한 변수 속에 들어가는 값은 수시로 변경이 가능하다.

* 따라서 변수는 사용 전에 반드시 선언하여 컴파일러가 기억공간에서 일정공간을 확보할 수 있도록 해야함

(1) 변수의 특징

- 모든 변수는 이름이 있다 (변수 명)

- 모든 변수는 정해진 자료형이 있다.

- 모든 변수는 할당된 값을 갖는다

(2) 변수명의 정의 규칙

- 모든 변수는 사용 전 반드시 선언되어야 한다.

- 변수명은 반드시 영문자나 밑줄(_)로 시작해야 한다.

- 변수명은 중간에 숫자와 밑줄을 섞어서 명명할 수 있다

- 변수명은 밑줄 외 특수문자 기입이 불가하다.

- 변수명은 대,소문자를 구별하여 사용한다.

- 변수명은 예약어를 사용할 수 없다.

(3) 사용 예

나. 자료형과 변수 선언

1. 변수와 변수선언

1) 변수 : 자료를 저장할 기억공간을 확보, 이 공간에 이름을 붙인 것

2) 변수 선언 : 확보된 기억공간에 이름을 부여하는 것 (필수적)

- 이러한 변수 선언을 위해 자료형이 필요

2. 자료형

1) 자료형의 종류

가. 기본형

(1) 정수형 (integer type)

- int, short, long, unsigned

- 운영체제에 따라 표현범위가 다름.

(2) 실수형 (flating-point type)

- float, double, long double

- 기본형은 double

(3) 문자형 (character type)

- char, unsigned char

- ASCII 코드를 사용하여 처리

(4) 열거형 (enumerated type)

- 숫자 대신 단어 사용

- 형식 : enum 태그명 {열거자1, 열거자2...}

(5) 형 없음

나. 확장형

(1) 배열형 (array type)

(2) 함수형 (function type)

(3) 포인터형 (pointer type)

(4) 구조체형 (structure type)

3. 변수선언

1) 정의 : 변수명과 변수가 가질 자료형을 지정하여 변수를 위한 기억공간을 할당하는 것.

2) 고려사항

- 변수에 저장될 값의 크기(범위)

- 변수의 선언 위치

: 변수를 함수 외부에 선언(전역변수로 선언)

/ 변수를 함수 내부에 선언(지역변수로 선언, 특정지역내에서만사용)

- 변수의 초기화

* 초기화 : 선언된 변수에 특정 값을 부여하는 것.

다. 선행처리기

1. 선행처리기

1) 정의 : 컴파일에 앞서 프로그램 선두에 선언된 지시자에들을 미리 처리하는 역할 수행.

- 컴파일 하기 전에 미리 수행되어야 할 처리기.

2) 선행처리기 사용시 주의점

- 반드시 #로 시작

- 명령문 끝에 세미콜론(;) 붙이지 않음

- 한줄에 하나의 명령만 씀

- 소스 프로그램 첫 부분에 위치 (도입부)

2. 종류

1) 파일포함 - #include

- C언어에서 제공되는 헤더파일(*.h)를 자신의 소스파일에 읽어 들여 함께 컴파일 하고자 할 때 사용

- C프로그램에서 표준함수인 printf(), scanf()등을 사용하려면 이

함수들의 원형(proto type)이 선언되어 있는 표준 입출력 헤더파일인 stdio.h를 #include 해야함.

* 형식 : #include <파일명>

#include "파일명"

* 사용예 : #include <stdio.h>

#include "stdio.h"

#include "\tc\lib\math.h"

* 기능 : #include 다음에 제시된 파일을 현재 프로그램에 포함시킴.

- <파일명>은 표준 디렉토리(보통 include 디렉토리)에서 파일을 찾아 포함.

- "파일명"은 현재 사용중인 디렉토리나 지정된 디렉토리에서 파일을 찾아 포함하며, 또는 드라이브나 경로를 사용.

2) 매크로 정의 - #define

- 매크로 정의시 사용

- 매크로 : 선행처리기 #define를 사용하여 단순 치환되는 자료, 프로그램 작성 시 명령이나 수식

또는 상수값이 자주 사용될 때 이를 대표하는 이름을 붙여 사용하는 대상

- 매크로 정의 : 상수 / 함수

(1) 매크로 상수 정의

* 형식 : #define 매크로명 자료

#undef 매크로명

* 사용예 #define PI 3.141592 ----> 프로그램 내의 PI는 3.141592로 치환하라

* 기능 : 프로그램에 나오는 매크로명을 지정한 자료로 치환한 후 컴파일(#define)하거나, 정의를 해제(#undef)한다.

(2) 매크로 함수 정의

- 인수 정의시 괄호 사용 -

* 형식 : #define 매크로명(인수) (수식)

#define 매크로명(인수,인수) (수식)

* 사용예 : #define AREA(x) (3.141595*(x)*(x))

#define HAP(a,b) (a+b)

* 장점 : 선행처리기에 의한 단순 치환 방식이므로, 전달인자의 자료형을 명시할 필요가 없고,

또 어떠한 자료형 변수를 인자로 전달해도 잘 동작하며 한 두줄의 코드인 경우 함수로 정의하는 것보다 속도가 빠르다.

(3) 조건부 컴파일

#if #else #elif #endif

- 조건에 따라 프로그램을 컴파일하는 명령

- 최적의 코드로 프로그램을 작성할 수 있기때문에 시스템의 성능 향상

* #if와 #elif 다음에는 컴파일 여부를 결정하는 조건문 필요

- 조건문은 선행처리과정에서 진위 여부를 판단할 수 있어야 함

- 변수 지정이나 함수 호출 불가

- 주로 매크로 값이 사용

댓글