본문 바로가기

Programming/C Language

프로그램 기본구성

C언어의 기본단위인 함수에대해 알아보겠다.
C언어는 함수로 시작하여 함수로 끝난다고 표현을 많이 하신다고 한다

자 , 함수가 무엇인지 한번 중,고등학생때의 기억을 되돌려 생각해보자
간단한 예시를 들어보겠다.
y=2x+3이라는 일차함수가 있다고 가정하자 , 
우리는 x에 대입하는 값에 따라 y의 결과값이 달라지는것을 알고있다.
이것이 함수다 , 입력값에 따른 출력이 존재하는것 ,  C언어에서는 x를 입력(Input) y를 출력(Output)이라고 한다.


그럼 , C언어에서 함수와 관련하여 사용되는 용어 3가지를 확인해보자


- 함수의 정의 : 만들어진 함수 , 실행이 가능한 함수를 일컬음
- 함수의 호출 : 함수의 실행을 명령하는 행위
- 인자의 전달 : 함수의 실행을 명령할 떄 전달하는 입력값


위의 내용은 꼭 익혀두도록 하자 , 나중에 함수 chapter에서 바탕을 이룬다.

앞서 말한것과 같이 C언어는 함수로 시작하여 함수로 끝난다 . 즉 정해진 순서에 의해 진행되는 함수의 호출이 바로 프로그램의 흐름이 되는 것이다.


그렇다면 제일 먼저 호출되는 함수는 무엇일까? 바로 main이라는 이름을 가진 함수다 . ( 함수의 이름만 알아봤을 뿐인데 왠지 이해가 되는것 같다.......)
C언어로 구현된 모든 프로그램에는 main이라는 이름의 함수가 정의되어야 한다.






위의 코드를 첫째줄 부터 살펴보자.
#include<stdio.h> 라고 적혀있는 부분은 추후에 설명하도록 하겠다 , 다만 앞으로 C 프로그래밍을 할땐 맨위에 저 내용을 적어주도록 하자
3번쨰 줄을 보면 int main(void)라고 적혀있음을 확인할 수 있다. 저것이 우리가 앞서 말한 main이라는 이름의 함수이다.
그러면 int는 뭐고 (void)는 뭔지 궁금하지 않은가?

출력형태        함수이름        입력형태

   int                main             (void)                     // int는 출력 void는 입력의 형태를 설명한다.

즉 정리하면 , ''출력의 형태가 int이고 입력의 형태가 void인 main이라는 함수'' 라고 정리할수있다.

여기서 int와 void가 갖는 의미는 추후에 설명하도록 하겠으니 , 입력과 출력에 대한 정보가 어느 위치에 오는지 , 그리고 함수의 이름은 어디에 위치하는지에 대해 기억해놓자! 


이렇듯 함수의 특성( 입.출력 형태 , 함수이름)만 정의했다고 해서 완벽한 함수가 되는것은 아니다.
함수는 기능을 지녀야 한다!    그리고 그 기능은 중괄호 { } 안에 표현된다.
즉 위의 main이라는 함수의 기능은 다음과 같다.
위 중괄호 내부는 두개의 문장이 있는데 , 이 문장들은 절차지향의 특성에 따라 순차적으로 실행된다 . 즉 중괄호 내에 존재하는 모든 문장은 그 수에 상관없이 위에서 아래로 순차적으로 실행된다.
그리고 이렇게 함수의 기능을 정의하고 있는 영역을 가리켜 '함수의 몸체'라고 한다.  그럼 지금까지 설명한 내용을 정리하겠다


출력형태        함수이름        입력형태

   int                main             (void)

{


함수의 몸체


}

이것이 함수정의의 전체적인 구조다.


그리고 출력형태라는 표현은 함수임을 강조할 때 사용되며 , 앞으로는 반환형 (Return Type)이라는 표현을 사용할 것이다!


함수 내에 존재하는 문장의 끝에는 세미콜론 ( ; ) 을 붙여준다.

위 사진의 함수의 몸체부를 살펴보자.
printf("Hello World! ");
return 0;                                이렇게 각 문장의 끝에는 세미콜론 ; 이 붙어있다.  보는바와 같이 C언어의 문장의 끝의 표현은 세미콜론을 이용한다.( 그렇다고 모든 문장에 세미콜론이 붙지는 않는다 , 나중에 배울 Control 문장에서는 세미콜론이 붙지 않으니 공부하면서 세미콜론을 붙여야하는 시점을 관찰해 나가자)

main함수 몸체의 문장을 살펴보자 , 난생 처음보는 함수의 호출문이다.
printf(" Hello World! ");            함수의 호출문 안에서 소괄호 안에는 함수호출시 전달할 인자정보를 표현한다.
그리고 이렇게 c언어에서는 큰 따옴표 " " 를 이용하여 문자열을 표현한다.

 즉 , 위 문장은 문자열 "Hello World!"를 인자로 전달하면서 printf라는 이름의 함수를 호출하는 문장이다.
근데 우리는 printf라는 함수를 만든적도 정의한적도 없다 , 그런데 어떻게 호출이 가능한 걸까?

printf함수 함수호출시 인자로 전달되는 문자열을 모니터에 출력하는 기능을 갖고있다.

이러한 printf함수는 내가 직접 만들지않아도 기본적으로 제공이되어 이용이 가능한 함수다.
즉 , C언어를 이용하는 사람이라면 누구나 가져다 쓸 수 있도록 이미 만들어져 있는 함수이다.
이렇듯 , 기본적으로 제공되는 함수를 가리켜 ' 표준함수 ' 라고 하고, 표준함수들의 모임을 '표준 라이브러리' 라고 한다.


printf함수와 같은 표준함수를 사용하기 위해서는 printf함수와 관련있는 '헤더파일 선언' 을 해줘야 한다.

우리가 코드 첫번째 줄에 적었던 #include<stdio.h>를 말한다.
헤더파일 stdio.h에는 printf 함수의 호출에 필요한 정보가 존재한다 , 따라서 이 파일의 정보를 포함하는 헤더파일 선언문이 삽입되어야 한다헤더파일의 선언은 소스파일 맨 앞부분 , main함수 정의 이전에 와야 한다.


return은 함수의 종료 & 값의 전달(반환)을 의미한다.

이거 정말 중요한 내용이니 꼭 확실히 하고 지나가자 , 앞서 보인 main함수 몸체의 2번째 문장을 보자
return 0;     이라고 적혀있다.
이를 가리켜 return문 이라고 하는데 , 이 문장은 이러한 의미를 갖는다.
- 함수를 호출한 영역으로 값을 전달(반환)

- 현재 실행중인 함수의 종료 

따라서 위의 코드를 실행시키면 main함수를 호출한 영역으로 0을 전달하고 함수를 빠져나온다 , 그런데 main함수의 종료는 프로그램의 종료로 이어지기 때문에 결국 프로그램이 종료된다.
우리는 앞으로 main함수 뿐만 아니라 다른 여러 함수위에서도 return문을 이용할 것이다.
갑의 전달과 함수의 종료를 목적으로 말이다.

'Programming > C Language' 카테고리의 다른 글

변수의 자료형 (Data Type)  (0) 2017.10.30
변수 (Variable) 란 ?  (0) 2017.10.30
printf 함수 ?  (0) 2017.10.30
C언어란?  (0) 2017.10.30
공부하기에 앞서...  (0) 2017.10.30