1. C 프로그램은 함수로 이루어진다.
1
2
3
4
5
6
7
8
|
#include <stdio.h>
int main()
{
printf("Hello, world!\n");
return 0;
}
|
cs |
1장에서 위와 같은 프로그램을 작성했다.
가장 기본적인 프로그램이지만, 우리에게 많은 것을 시사한다.
첫 번째 행부터 보자.
1
|
#include <stdio.h>
|
cs |
대략적인 의미는 다음과 같다.
stdio.h 파일의 내용을 현재 소스 코드 파일에 포함시킨다.
#include는 현재 소스 코드에 무언가를 포함시킨다(include)는 의미다.
stdio.h 는 파일의 일종이다.
따라서 다음과 같이 이해하고 넘어가면 된다.
모니터에 Hello, world!를 출력하려면 stdio.h 파일의 내용이 필요하다.
두 번째 행은 가독성을 위한 줄바꿈일 뿐이니 넘어가고, 이제 세 번째 행을 볼 차례인데
그 전에 함수(function)에 대한 이해가 필요하다.
C언어를 공부하다 보면 다음과 같은 말을 듣게 될 것이다.
C언어는 함수로 시작해서 함수로 끝난다.
C 프로그램을 만든다는 것은, 함수를 만들고, 그들의 실행 순서를 명시하는 것이다.
다시 말해, C 프로그램의 기본 단위는 함수라는 것이다.
그렇다면 함수는 무엇이고, 함수의 실행이 의미하는 것은 무엇일까?
y = 2x + 3
그럼 다음과 같은 관계를 알 수 있다.
x에 1을 넣으면 y는 5.
x에 2를 넣으면 y는 7.
x에 3을 넣으면 y는 9.
...
본래 함수는 위와 같이 한 변수에 대해 다른 변수가 대응되는 관계를 말한다.
바꿔 말하면 'x에 어떤 값을 넣으면 y가 얻어진다'고 할 수 있다.
그러니까 앞의 관계는 다음과 같다.
1을 입력하면 5가 얻어지고,
2을 입력하면 7가 얻어지고,
3을 입력하면 9가 얻어지고,
...
따라서 C언어에서 함수는 "적절한 입력에 따른 출력이 존재하는 것"이라고 할 수 있다.
2. 함수의 구조
1장에서 작성한 소스 코드는 다음과 같다.
1
2
3
4
5
6
7
8
|
#include <stdio.h>
int main()
{
printf("Hello, world!");
return 0;
}
|
cs |
C언어는 기본적으로 main이라는 함수를 실행하는 것으로 프로그램을 시작한다.
따라서 모든 C 프로그램은 main 함수가 정의되어 있어야 한다.
위 예제에서 main 함수의 정의 부분만 보면 다음과 같다.
1
2
3
4
5
6
|
int main()
{
}
|
cs |
4가지 부분으로 나누어 보면 다음과 같다.
int: 출력 형태. 이를 반환형(return type)이라 한다. 일반적으로 '출력 형태'라는 말보다는
'반환형'이라는 말을 사용한다.
main: 함수의 이름.
(): 입력 형태. 위 예제와 같이 아무것도 없는 것은 입력이 없음을 의미한다.
{}: 함수의 몸체(body).
따라서 main 함수를 다음과 같이 정리할 수 있다.
int의 형태로 출력하며 입력을 받지 않고, 이름이 main인 함수
함수의 기능은 함수에 몸체에 정의된다.
앞에서 본 함수 y = 2x + 3 의 경우 입력값에 2를 곱하고 3을 더한 값을 출력하는 기능을 하는 것이다.
결국 예제의 함수 main()은 모니터에 Hello, world!를 출력하고 0을 반환하는 기능을 한다고 할 수 있다.
3. 함수와 관련된 용어
딱히 어려운 용어도 아니고, 말 그대로 용어일 뿐이니, 그냥 그런가보다 하면 된다.
함수를 정의한다: 함수의 반환형,
함수의 정의: 만들어진 함수, 다시 말해 실행할 수 있는 함수.
함수를 호출한다: 함수의 몸체에 명시된 기능을 실행하도록 명령을 내린다.
*인자를 전달한다: 함수를 호출할 때 전달하는 입력값.
*인자: 매개변수라고도 한다.
4. 함수 내의 문장은 세미콜론으로 끝을 표시한다.
예제의 함수를 다시 보면, 문장 끝에 ; 이 붙어있음을 알 수 있다.
1
2
3
4
5
6
7
8
|
#include <stdio.h>
int main()
{
printf("Hello, world!\n");
return 0;
}
|
cs |
C언어에서는 이처럼 문장이 끝났음을 표시하기 위해 문장 끝에 세미콜론을 붙인다.
세미콜론이 붙는 문장이 있고 그렇지 않은 문장이 있는데, 이는 여러 가지 예제를 접하고 코딩을 하다 보면 구별할 수 있게 된다.
5. main 함수의 첫 번째 문장: printf 함수
1
2
3
4
5
6
7
8
|
#include <stdio.h>
int main()
{
printf("Hello, world!\n");
return 0;
}
|
cs |
printf 는 전달받은 인자를 모니터에 출력하는 기능을 한다.
위 예제에서는 printf 함수가 "Hello, world!\n"라는 인자를 모니터에 출력하는 것이다.
(\n은 개행(改行, 줄바꿈)을 나타내는 특수 문자다.)
그런데 우리는 printf 함수를 만들지 않았다. 그런데도 모니터에는 주어진 인자가 정상적으로
출력된다. 어떻게 된 일일까?
1. C 프로그램은 함수로 이루어진다.에서 #include <stdio.h>의 의미를 다음과 같이
(대략적으로) 정의했다.
stdio.h 파일의 내용을 현재 소스 코드 파일에 포함시킨다
감이 오는가?
printf 함수는 기본적으로 제공되어 사용자가 직접 만들지 않아도 실행할 수 있는 함수다.
이러한 함수를 표준 함수(standard function)라 한다.
그리고 이런 함수들이 정의된 문서를 표준 라이브러리(standard library)라 한다.
위 예제의 경우 stdio.h 라는 표준 라이브러리에 printf 라는 표준 함수가 정의된 것이다.
따라서 우리는 stdio.h 라는 표준 라이브러리의 내용을 가져오면
printf 라는 표준 함수를 사용할 수 있는 것이다.
이것이 #include <stdio.h>의 의미다.
6. main 함수의 두 번째 문장: return 0;
① 이 함수를 호출한 곳으로 0을 전달한다. (=0을 반환한다.)② 함수를 종료한다.
① 블록 단위 주석② 행 단위 주석
/* -------------------------------------- 이 부분은 주석 --------------------------------------- */
/*주석 1주석 2주석 3*/
//주석 1//주석 2printf("Hello, world!\n"); //여기부터만 주석
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
/*
작성 날짜: 2019.02.24
작성자: T0pli
기능: 모니터로 문자열 출력
*/
#include <stdio.h>
int main()
{
printf("Hello, world!\n"); //Hello world! 출력
return 0;
}
|
cs |
1 /*2 주석 134 /*5 주석 26 */78 주석 39 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
/*
작성 날짜: 2019.02.24
작성자: T0pli
기능: 모니터로 문자열 출력
/*
블록 단위 주석은 중첩할 수 없다.
*/
*/
#include <stdio.h>
int main()
{
printf("Hello, world!\n"); //Hello world! 출력
return 0;
}
|
cs |
1 /*2 주석 134 //주석 256 주석 37 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
/*
작성 날짜: 2019.02.24
작성자: T0pli
기능: 모니터로 문자열 출력
//행 단위 주석은 중첩할 수 있다.
*/
#include <stdio.h>
int main()
{
printf("Hello, world!\n"); //Hello world! 출력
return 0;
}
|
cs |
'Programming > C' 카테고리의 다른 글
입력과 출력 (0) | 2019.03.02 |
---|---|
연산자 (0) | 2019.03.01 |
변수와 자료형 (0) | 2019.02.26 |
Visual Studio 2017 설치 (0) | 2019.02.24 |
About C Language (0) | 2019.02.22 |