본문 바로가기

C/1.프로그램기본구성

Hello.c를 통한 c의 기본적인 이해

Hello!!에서 작성한 소스를 참고해보자.


1
2
3
4
5
#include <stdio.h>
 
void main(){
    printf("HELLO KOALA! \n");
}
cs

무작정 따라 했지만 이 문장이 가지는 의미가 무엇일까? 문장들을 사전적인 의미로 받아들여야 할지 중괄호와 대괄호의

의미는 무엇인지 이해가 안갈것이다.

이런 의문을 해결하기 위해 하나씩 짚어가보자.


"C는 함수로 시작해서 함수로 끝난다."라고 책에도 말한다.

나이를 떠나서 수학을 기억한다면, 함수가 무엇인지 기억할 것이다.

2 x X = Y


X에 2를 대입한다면 Y의 값은 4가 된다. 간단한 공식이지만 비교해서 설명하자면 X에 대입하는 행위를 입력이라 하고

X에 대입한 값을 근거로 Y값을 산출하는 것을 출력이라 한다.

입력과 출력이 있는것을 가리켜 함수(function)이라고 한다.

함수에 대해선.. 훗날 함수 파트에서 조금더 자세하게 다루도록 하겠다.


위소스 코드에서 함수는 어디에 있을까?

C프로그램은 함수로 시작해서 함수로 끝난다. C프로그램은 실행시 정해진 순서에 의해서 함수가 호출되어지며 제일 먼저 호출되는

함수는 반드시 main()함수가 된다. 프로그램이 실행되자마자 컴퓨터는 프로그램 내부에서 main이라는 이름의 함수를 찾아서

호출이 되며 C로 구현된 모든 프로그램에서는 반드시 main이라는 이름의 함수가 존재해야 한다.

main()이 함수의 하나이다.


항상 함수는 정의할때 아래와 같이 정의 한다.

1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
//////////////////////////////////////////////////////
//    출력형태(=리턴형)   함수이름    (입력형태)       //
//     void              main       (       )       //
//////////////////////////////////////////////////////
void main(){
    printf("HELLO KOALA! \n");
}
cs

즉 위 소스에서 메인함수가 의미하는 바는 출력이 void 또는 반환(리턴)값이 void인 main이라는 이름의 함수이며 입력형태가 void이다.
void의 사전적 의미는 빈 공간, 공허 등등의 뜻이지만, 말 그대로 없다 라고 받아들이면 편하다.
위소스코드에서 입력형태에 () 빈 공백이 있는데, 이는 (void) 또는 (0)과 같다.
main()함수는 입력될 값이 없다는 뜻이기도 하다.

main()이후에 중괄호가 있는데 {} 이는 함수의 몸체라고 불리운다.
C는 절차적인 언어라서 위로부터 아래로 물흐르듯 순차적으로 실행되어진다.
위소스에선 함수의 몸체 내부에 단 한줄(한 라인)만 존재한다.

printf("HELLO KOALA! \n");

항상은 아니지만 함수 내부의 한문장이 끝날땐 반드시 ;세미콜론을 붙여주자.
문장이 끝났다는 의미 또는 명령이 끝났다는 의미로 ;세미콜론을 쓰도록 한다.
하지만 항상 세미콜론이 붙는 것은 아니다. 반복문이나 조건문 함수의 몸체가 종료되는 시점같은 경우엔 쓰지 않는다.
자연스레 따라하다보면 세미콜론을 언제 붙이는지 감이 오게 될것이다.

자 그렇다면 printf는 무엇일까. 함수이다.
표준 라이브러리에서 제공되는 함수이다. printf(입력형태)로 "HELLO KOALA! \n"를 전달해주었다.
printf는 직접 만들지 않아도 호출이가능한 이미 만들어져 제공되는 함수이다.
이렇듯 기본적으로 제공되는 함수를 가리켜 '표준함수'라고 하고, 표준함수들의 모임을 가리켜 '표준 라이브러리'라 한다.

printf 표준 함수를 사용하기 위해선 printf가 속해있는 표준 라이브러리를 가져올 필요가 있는데,
이는 1번째 줄의 #include 라는 전처리문을 이용해 printf가 속해있는 표준 라이브러리인 stdio.h 
(standardinputoutput.header) 파일을 삽입해준다.

이때 include는 반드시 메인함수 이전에 선언되어야 한다.(C언어는 절자지향언어이다.)

tip : 
전처리문 #include 의미 : 컴파일러에게 사용자의 편리성을 위해 모여진 함수의 집합체인  헤더파일을 포함시키기 위한 선언문 
                                 이는, 프로그램에서 main함수보다 먼저 호출되며 실행되어진다.
main() 역할 : 프로그램의 시작점이자, 메인 함수가 존재하지 않을 경우 프로그램은 실행되지 않는다