언어/C언어

[C언어] 프로그램의 기본 구성

AgSn 2024. 2. 23. 22:28
반응형
프로그램의 기본 구성

 

 

가장 기초가 되며, 중요한 부분이라 생각한다.

우선 '함수' 라는 단어를 들어본 적이 있는가

어떠한 식이 떠오르며, 보통의 수포자들은 좋아하지 않을 것이다.

 

근데 왜 갑자기 함수..? 분명 코딩인데..

C언어는 함수에서 시작해서 함수로 끝나기 때문이다.

함수라는 단어의 의미를 다시 생각해보고, 내가 생각하는 함수에 대해 말하고자 한다.

 


함수란?

어떠한 프로그램에 입력을 넣으면, 출력이 나오는 것을 함수(function) 라고 한다

간단한데..뭔가 부족해보이지만..이게 다이다

초등수학 식을 가져와보면,

y  =  2x + 10

x에 입력을 4를 해보자. 그렇다면 y는? 18일 것이다. 

x는 입력, y는 출력을 의미하고 이것이 함수이다.

 

몇개의 단어를 정의하고자 한다

함수의 호출: 함수의 실행을 명령하는 행위

인자의 전달: 함수의 실행을 명령할 때 전달하는 입력 값

 

비유를 하자면, 어디선가 2x+10이라는 함수를 호출했고 2라는 인자를 전달하는 것이다.

 


이제부터는 코드를 하나 던져주고, 한 문장씩 파헤쳐 볼 것이며, 중간중간 용어를 정의할 것이다. 

#include<stdio.h>
int main(void) {
	printf("Hello World \n");
	return 0;
}

 

함수의 형태

위 그림을 말로 해석하면, 입력형태가 void이고 출력형태는 int이며, 함수의 이름은 main이다.

입출력 형태는 사용목적에 따라 달라질수 있으며, 이는 추후에 자세히 다룰 것이다.

지금은 이러한 것이 있다는 사실만 알면 된다.

그 아래 이제 함수의 몸체라 불리는, body가 존재한다.

 body는 2x+10으로 비유할 수 있다.

 

 

세미콜론 ;

 

함수내에 존재하는 문장에는 세미콜론 ; 을 꼭 붙여야한다.

위 코드의 main함수의 body를 보면, 

printf("Hello World \n");
return 0;

문장의 끝에 ; 이 붙어있는 것을 볼 수 있는데, 세미콜론을 붙임으로써 문장의 끝을 표현하는 것이다.

단, 반복문 조건문, 구조체 등에는 세미콜론을 붙이지 않는다.

이는 코딩을 하면서 깨닫는 것이 빠르다!

 

표준 라이브러리

 

printf("Hello World \n");

 

위 문장은, printf라는 이름의 함수를 호출하여  Hello World \n을 인자로 전달하는 문장이다.

약간 말이 어려운데, 이 문장을 실행하면 모니터에 Hello World를 출력한다.

이처럼 직접 만들지 않더라도 기본적으로 호출이 가능한 함수를 "표준 함수" 라고 한다.

이 표준함수를 모아둔 모임을 "표준 라이브러리" 라고 한다.

 

C언어에는 많은 표준 함수를 제공하며, 자신이 필요로 하는 함수가 표준함수에 정의되어 있다면,

굳이 만들지 않고 호출하면 된다. 

 

헤더 파일 선언

 

표준함수를 사용하려면, 그냥 쓰면 되는것 인가..? 아니다!!

printf와 같은 표준함수를 호출하기 위해선 해당 함수가 정의된 헤더 파일을 선언해야 한다.

#include<stdio.h>

 

include 포함한다 뭐를? stdio.h를!

(참고) stdio.h는 standard input output의 줄임말이고, h는 header파일을 뜻한다. 

이는 컴파일러에게 함수가 어떻게 작동하는지 알려주는 역할을 한다.

 

return 문장

 

마지막 문장을 보면 return;이 있다.

이를 리턴문이라고 하는데, 이 문장은 두 가지 의미를 가진다.

 

1. 함수를 호출한 영역으로 값을 반환

2. 현재 실행중인 함수의 종료

 

이 코드에서는 2번 역할에 해당하며, main함수를 호출한 영역으로 0을 전달하게 된다.

 

(참고)

main함수는 프로그램이 시작되면 자동으로 호출되는 함수로, 운영체제에 의해 호출된다.

따라서 main함수 마지막에 있는 return 0;를 하면 운영체제로 0이 전달되며

이 의미는 곧 프로그램의  종료를 의미한다.

보통 0이라는 값은 정상적인 종료의 상황에서 전달하는 값이다.

반응형