안녕하세요.
이번에는 이전 포스팅에서 컴파일 해본 C 언어 프로그램 소스코드 예제를 가지고 분석할 예정입니다.
해당 예제는 Ch02 의 first.c 입니다.
1. 소스코드 예제
// first.c
#include <stdio.h>
int main(void) /* a simple program */
{
int num; /* define a variable called num */
num = 1; /* assign a value to num */
printf("I am a simple "); /* use the printf() function */
printf("computer.\n");
printf("My favorite number is %d because it is first.\n",num);
return 0;
}
> 먼저 개괄 분석을 하겠습니다.
- #include <stdio.h> ~ : 전처리기 지시자
- int main(void) : 메인 함수
- /* ~ */ : 주석
- { ~ } : 함수 블록
- int num : 변수 선언문
- num = 1 : 변수 대입문
- printf() : 함수 호출문
- return 0 : 함수 반환문
- ; : 세미콜론
2. 전처리기 지시자 : #include<stdio.h>
1) 의미
- 전처리기 지시자
- 해당 라인에 stdio.h 파일 전체 내용을 붙여넣기한 것과 같은 효과를 가져옵니다.
2) stdio.h(standard input / output header)
- stdio.h 파일은 모든 C 컴파일러 패키지 일부로 제공됩니다.
- 해당 예제에서 사용하는 printf() 함수인 출력 함수에 대한 정보를 가지고 있습니다.
- 뿐만 아니라 입력함수에 대한 정보도 가지고 있습니다.
3) 헤더 파일
- 헤더 파일이란 사용할 함수들의 정보를 담고 있는 파일입니다.
- 실제 함수 작동은 컴파일러의 링커 부분이 라이브러리 코드를 가져왔을 때 이루어집니다.
3. 메인 함수 : int main(void)
1) 의미
- C 언어 프로그램의 첫 시작을 담당하는 함수
2) 반환형(int)
- 현재 함수의 반환형 정보는 int 입니다. int 는 정수형을 의미합니다.(int 에 대한 내용은 자료형에서 깊게 알 수 있습니다.)
3) 전달정보(void)
- 현재 함수의 전달되는 정보는 void 입니다. void 는 비어있는 형태를 의미합니다.
- void 는 생략이 가능합니다.
4. 주석 : /* ~ */
1) 의미
- 주석이란 소스코드를 보는 개발자에게 정보를 나타나기 위한 일종의 메시지다.
- 컴파일러는 주석을 무시하고 컴파일 합니다.
2) 표현방법
- /* ~ */ : 이 방법은 두 줄을 넘어가는 경우(주석처리 할 코드가 긴 경우)에 많이 사용합니다.
/* 이것이 바로 주석입니다. */
- // : 이 방법은 한 줄 만을 주석처리 할 경우 자주 사용합니다.
// 이렇게도 주석을 붙일 수 있습니다.
5. 함수 블록 : {~}
1) 의미
- 함수의 경계를 구분합니다.
- 함수의 필수요소로써 반드시 들어가야 합니다.
6. 변수 선언문 : int num
1) 의미
- 데이터형이 int(정수형) 이고, 이름이 num 인 변수를 선언합니다.
2) 키워드
- int 는 C 의 기본 데이터형 중 하나임을 알리는 키워드입니다.
- 이러한 키워드들은 변수의 이름이 될 수 없습니다.
- int(정수형) 뿐만 아니라 char(문자), float/double(부동소수점 수) 와 같은 데이터형도 존재합니다.
3) 변수명
- 변수명은 일종의 식별자 입니다.
- 식별자는 컴퓨터 메모리 상 특정 위치에 연결하는 역할을 합니다.
3.1) 변수명 규칙
- 키워드 명을 사용할 수 없습니다.
- 길이 제한은 없습니다.
- 대문자와 소문자를 구분합니다.
- 숫자는 사용 가능하지만 첫 문자로 올 수 없습니다.
- 특수문자는 _(밑줄) 만 가능합니다.
- 공백은 사용 불가합니다.
- _ 로 첫 문자를 시작하는 변수명은 가급적 사용하지 않습니다.(C 라이브러리 변수명과 충돌을 일으킬 수 있습니다.)
int winner // (o)
int $%[** // (x) 허용되지 않는 특수문자
int cat2 // (o)
int 2cat // (x) 숫자는 첫 문자 불가
int Cool_Num // (o)
int Cool-Num // (x) 허용되지 않는 특수문자
int TaxRate // (o)
int Tax Rate // (x) 공백 불가
int _kPop // (o)
int I'am // (x) 허용되지 않는 특수문자
7. 변수 대입문 : num = 1
1) 의미
- 변수 num 에 값 1을 대입하라는 의미입니다.
- 변수 선언문에서 num 이라는 변수에 공간을 할당하고, 대입문에서 값을 저장합니다.
- 변수는 항상 오른쪽에서 왼쪽으로 값을 대입합니다.
8. 함수 호출문 : printf()
1) 의미
- 함수를 호출합니다.
- 해당 함수에만 국한되는 것이 아니라 앞으로 여러 함수들을 호출할 수 있습니다.
2) 함수호출(제어권 양도)
- 해당 줄 진입 시 printf() 라는 함수를 호출(call) 합니다.
- main() 에서 printf() 에게 프로그램 제어권이 양도됩니다.(넘어갑니다.)
3) 전달인자(=매개변수)
printf("I am a simple ");
- 함수에 "I am ~ simple " 과 같은 문자열을 전달인자로 사용하였습니다.
4) 함수실행
- 정의된 함수의 실제 동작이 실행됩니다.
5) 함수반환(제어권 반환)
- printf() 에서 main() 에게 프로그램 제어가 반환됩니다.(넘어갑니다.)
9. 함수 반환문 : return 0
1) 의미
- 함수의 마지막 문장입니다.
2) 반환형
- main() 의 반환형은 int(정수형) 이라고 했습니다.
- return 시에는 반환형에 맞는 값을 반환해주어야 합니다.
- 따라서 0 이라는 정수를 반환하면서 main() 은 종료됩니다.
10. 세미콜론 : ;
1) 의미
- 문장의 끝을 구분하는 요소
- 컴파일러는 각 문장을 구분하는 요소로 세미콜론을 인식하고, 이는 반드시 포함되어 있어야 합니다.
'C > Study' 카테고리의 다른 글
| C 언어 : 6. 루프 제어문 (0) | 2026.05.19 |
|---|---|
| C언어 : 5. 연산자 (0) | 2026.05.19 |
| C언어 : 4. 문자열과 입출력 (0) | 2026.05.18 |
| C언어 : 3. 데이터형 (0) | 2026.05.18 |
| C언어 : 1. C 언어에 대하여 (0) | 2026.05.17 |
