[ C 언어 스터디]

 

자료출처: 핵심 길잡이 C 프로그래밍 언어

도서출판: 성안당

 

1. C 언어의 개요

 

★ C 프로그램의 기본 구조 ★

C 프로그램은 하나 이상의 함수로 구성된다. 이 때 main() 이라는 함수가 필수적으로
필요하며 나머지 함수는 필요에 따라 선택적으로 사용할 수 있다. 또한 각 함수는 머리
부(header)와 몸체부(body)로 구성된다.

머리부에서는 라이브러리 함수의 헤더 파일(header file)과 사용자가 정의한 메크로(macro)
및 사용자 정의 함수의 프로토타입(prototype)을 기술한다. 몸체부는 프로그램의 본체로서
C 언어의 명령어를 기술한다 C 언어상에서 기술하는 모든 문장은 반드시 문장의 끝을 명시

하는 의미에서 세미콜론(semicolon ;)으로 끝내야 한다.
C 프로그램의 기본 구조를 나타내면 [그림 1-2]와 같다.

파일 포함(hearder file)
매트로 정의
사용자 정의 함수 선언

머리부(header)

main()
{

내부변수선언 ;
명령문 기술 ;

}

몸체부(body)

함수명(가인수리스트......)

가인수 선언 ;
{

내부변수선언 ;
명령문 기술 ;

}

사용자 정의 함수부

[그림 1-2 ] C 언어의 기본 구조

예제 1.1

C 언어의 기본 구조를 나타낸 간단한 예제 프로그램이다 이 프로그램은 "Turbo C Programming" 을 화면에 출력하는 프로그램이다.

▶프로그램

#include <studio.h>

void main(void)
{

printf("Turbo C Programming");

}

▶실행 결과

Turbo C Programming

 

< C 언어의 구성 요소>

프로그램의 명령문을 작성하는 데 사용할 수 있는 문자는 다음과 같다.
1. 영문자: 소문자 (a~z), 대문자 (A~Z)
2. 숫자: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
3. 특수문자: + = _ - ( ) * & % $ # ! | < > . , ; : " ' / ? { } [ ] ~ 등
4. 공백문자(white space) : 공백(blank)문자, 탭(tab), 개행문자(new line) 등
이와 같은 문자들은 컴파일러에 의해서 구문의 단위인 토큰(token)과 결합 된다
토큰에 포함되는 요소에는 식별자, 예약어, 문자열 상수, 연산자와 분리자 등이 있다.

 

< 주석문(Comments) >

주석문은 프로그램을 알기 쉽도록 설명하는 부분으로 프로그램의 실행과는 전혀
무관하며 프로그램의 어느 부분에나 사용할 수 있다. C 언어는 주석을 필요로 하는
부분에 /* 설명 내용 ~ */로 표시한다. 즉 /* 와 */ 사이에 설명할 내용을 적어 둔다.
또한 주석은 한 줄 또는 여러 줄에 걸쳐 쓸 수 있으나 중첩하여 쓸 수는 없다.
객체 지향 언어인 C++에서는 주석문을 // 설명 내용 ~( 이 줄 (line)의 끝까지)
로도 표시할 수 있다. 즉, // 이후부터 그 줄의 끝까지가 주석문이 된다.

다음 프로그램의 실행 결과를 나타내시오

▶프로그램 : 주석문 넣기

#include <stdio.h>

main()
{

/* 이 부분은 설명을 기술하는 곳입니다.*/

printf("The Turbo C programming\n");

}

▶실행 결과

The Turbo C programming

 

< 블록 (Blocks) >

한 개 이상의 명령문들을 중괄호 ( brace, { } ) 로 묶어서 하나로 취급한다. 이와 같은
것을 블록 ( block ) 이라 한다. C 언어에서는 이러한 블록의 개념을 도입함으로써 문장의
계층화를 형성살 수가 있다.
블록은 국부적인 ( local ) 선언 명령문과 실행 명령문들로 이루어질 수 있으며, 단 하
나의 문장만을 묶어서 블록을 형성할 수도 있다. main( ) 함수를 포함한 모든 함수들은
블록으로 되어 있으며, 블록은 중첩할 수 있다. 다음 프로그램은 중첩된 블록 형태를
보여 주고 있다.

다음 프로그램의 실행 결과를 나타내시오

▶프로그램: 블록 예

#include < stdio.h >

main ( )
{

int a , b;

a = 5;

{

b = a + 10;

a = a +5;

printf (" a = %d  b = %d\n", a, b);

}

printf (" a = %d  b = %d\n", a, b);

}

▶실행 결과

a = 10 b = 15

a = 10 b = 15

 

< 식별자 ( Identifiers )>

C 프로그램에서 변수와 함수, 배열 등에 부여된 이름, 즉 변수에, 함수명, 배열명
등을 명칭 ( name ) 또는 식별자 ( Identifier )라고 하며, 다음과 같은 규칙에 의하여 부
여된다.

1. 식별자는 영문자 ( A ~ Z, a ~ z)와 숫자 ( 0 ~ 9 ), 밑줄문자 ( _ )로 구성되며, 첫 글자는
반드시 영문자이거나 밑줄자이어야 한다.
2. C 언어에서는 대문자와 소문자를 반드시 구별하므로 명확하게 표기해야 한다.
3. 식별자 사이에는 공백문자를 사용해서는 안 된다.
4. 식별자의 길이는 컴퓨터의 기종에 따라 다르다. ANSI C 에서는 31자까지 사용할
수 있도록 허용되지만 보통은 8자까지 유효하다.
5. 일반적으로 예약어는 단독으로는 식별자로 사용할 수 없다.

옳은 예 잘못된 예

age, tax_rate, SQ_MILERS, text_12, abc, auto_case, if_else

45rate, name#, 432, a+b, tax-rate, auto, if, else

< 예약어 ( Keywords )>

예약어는 컴파일러 ( compiler )에 의해서 그 사용과 의미가 이미 정해진 것으로서 사
용자가 임의로 다른 목적으로 사용하거나 의미를 바꾸어 사용할 수 없다. 그러므로 이
들을 프로그램의 변수명이나 함수명 등으로 사용해서는 안 된다. [ 표 1 - 1 ]은 예약어를
나타낸다.

auto

double

int

switch

break

else

long

typedef

case

enum

register

union

char

extern

return

unsigned

const

float

short

void

continue

for

sizeof

while

default

goto

static

 

do

if

struct

 

 

★ C 프로그램 컴파일과 실행 ★

C 언어는 컴파일러 방식을 채택한 프로그래밍 언어이다. 따라서 먼저 원시 프로그램
( source program, *.c , *.cpp )을 작성한 후에 컴파일러는 번역기를 통해 원시 프로그램
문법적인 오류 ( syntax error )를 검사한다. 에러 ( error )가 있으면 컴파일러는 프로그래
머에게 이를 알려 준다. 그러면 프로그래머는 다시 프로그램을 수성 ( debugging ) 하여
번역 과정을 거친다. 만약 에러가 없으면 컴파일러는 C 프로그램을 기계어로 번역하여
목적 프로그램 ( object program, *.obj )을 생성한다.
작성된 목적 코드를 시스템 라이브러리나 다른 목적 코드와 연결하여 실행 가능한
코드를 생성하여 원하는 결과를 얻을 수 있다. 이 때 실행 결과가 맞지 않으면 원시 프
로그램을 수정하여 다시 번역 및 링크 ( link ), 실행 과정을 반족해야 한다. C 프로그램
의 실행 과정은 [ 그림 1 - 3 ]과 같다.

첫번째 -> 원시 프로그램 편집 ( editor ) 프로그램 작성 단계
두번째 -> C 선행처리기 ( C preprocessor ) 프로그램 컴파일 단계
세번째 -> C 컴파일러 ( C compiler )
네번째 -> 어셈블러 ( assembler )
다섯번째 -> 링커 ( linker )
여섯번째 -> 실행 ( execution ) 파일 생성 ( * exe ) 프로그램 실행 단계
일곱번째 -> 결과 확인

[ 그림 1 - 3 ] C 프로그램의 실행 과정