C 프로그램의 기본 구조

일반적인 C 프로그램의 기본 구조

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*-------- 도입부 --------*/
#include <stdio.h>
int add(int x, int y);

/*------ main()함수 ------*/
int main()
{
	// 필요한 선언문, 명령문 등.
	int result = add(1, 2);
	return result;
}

/*------ 필요 함수 선언 -----*/
int add(int x, int y)
{
	return x + y;
}
구조 설명
도입부 프로그램의 시작 부분으로, 보통 다음과 같은 사항을 서술함
- 프로그램 설명
- 선행 처리를 위한 다른 파일 포함이나 매크로 정의
- 프로그램 전체에 사용되는 전역 변수 선언
- 사용자 함수 원형 선언
main() 함수 C 프로그램의 시작 위치(진입점)이 되는 함수
- 실행 파일에는 반드시 1개의 main 함수가 존재해야 한다.
필요 함수 선언 main 함수를 따라 프로그램이 진행되면서 호출하는 함수에 대한 선언
- 함수의 시작과 끝은 중괄호({})로 묶는다.

C 프로그램 작성시 일반적인 규칙

  • 반드시 하나 이상의 함수를 포함한다.
  • main() 함수가 반드시 존재해야 한다.
  • 함수의 몸체는 시작과 끝을 알리는 중괄호({})를 사용하여 블록으로 구성한다.
  • 블록 안에는 변수 선언문, 치환, 연산, 함수호출 등 명령을 기술한다.
  • 선행처리 지시어를 제외한 문장의 끝에는 끝을 알리는 세미콜론(;)을 붙인다.

도입부에 사용자 정의 함수의 원형을 미리 선언하는 이유

  • 위에서 예시 코드에서, add 함수의 원형을 도입부에 선언한 것을 볼 수 있다.
  • C 언어에는 함수를 호출하기 전에 컴파일러가 그 함수의 존재를 알고 있어야 한다라는 핵심 규칙이 있다.
  • 컴파일러는 코드를 위에서 아래의 순서로 읽기 때문에, 함수가 쓰이는 지점(위 예시에서는 main 함수) 나중에 정의된 함수는 컴파일러가 인식하지 못해 오류나 경고가 발생할 수 있다.
  • 따라서 C 언어에서는 보통 도입부에 함수 프로토타입을 선언해 놓는다.

C 프로그램의 구성 요소

C 프로그램을 구성하는 토큰의 종류

  • 토큰 : 프로그램을 구성하는 가장 작은 단위 (이름, 연산자, 상수 …)
  • 컴파일러는 컴파일시 프로그램을 구성하는 문자들을 기본 처리 단위인 토큰으로 분리하고, 그것이 올바른 규칙을 따르는지 검사한 뒤, 실행 코드를 생성한다.
토큰의 종류 설명
예약어(키워드) C언어에서 고유한 문법이나 의미가 정해져있는 단어
명칭 변수, 배열, 함수 등을 식별하기 위해 정의하는 이름
상수 값이 변하지 않는 자료 (정수, 실수, 문자 등)
연산자 =, -, *, /, +
구분자 ;, ,, {}, (), []
구두점 연산자와 구분자를 합하여 구두점이라고 함
설명문(주석) /* */ 또는 //

예약어

  • C언어 에서 고유한 문법 및 의미가 정해진 단어
  • 이미 쓰임새가 정해져 있으므로, 다른 용도로는 사용할 수 없다.
  • 자료형 관련 : char, int
  • 기억 관련 : auto, static
  • 제어 관련 : if, else

명칭

  • 프로그램 내의 여러가지 요소를 식별하기 위해 정의하는 명칭
  • 변수, 함수, 배열 등의 식별을 위해서 정의한다.
  • 명칭을 정할 때에는 여러 가지 규칙 (대소문자, 특수문자에 대한)이 있다.

상수

  • 수치, 문자, 문자열 상수가 있다.
1
2
3
123    // 수치 상수
'a'    // 문자 상수 : 홑따옴표로 감싼다.
"ABC"  // 문자열 상수 : 쌍따옴표로 감싼다.

연산자

  • 여러 유형의 연산을 포함한다. : 산술 연산, 관계 연산, 논리 연산, 비트 연산, 대입 연산 등
  • 연산의 대상이 되는 것을 피연산자라고 하며, 1~3개의 피연산자가 사용된다.

설명문(주석)

  • 프로그램에 대한 설명을 작성하는 문장
  • 컴파일러는 설명문 영역은 컴파일하지 않는다.
  • /* 설명문 */ 혹은 // 설명문 과 같은 방식으로 작성한다.

Reference

C 프로그래밍 (김형근, 곽덕훈, 정재화 공저)
C 프로그래밍 강의 (방송통신대 - 이병래)

Comments