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