본문 바로가기
  • 오늘도 신나게
코딩을 합시다/최대한 쉽게 설명한 C 언어

초등학생도 이해하는 C 언어 - main 함수

by 앵그리선반장 2020. 4. 30.

main() 함수

C 언어는 프로그래밍 언어입니다.

말 그대로 언어 이기 때문에 정해진 문법이 있어요. 규칙이 있다는 거죠.

그런데 그 문법이란 것이 사람 말처럼 복잡하지는 않아요.

가장 쉬운 예제를 기반으로 시작해 볼게요.

#include  <stdio.h>

void main(void)
{
	int a,b,c;

	a = 1;
	b = 2;
	c = a+b;

	printf("%d+%d=%d\n",a,b,c);
}

c 언어 문법에 잘 맞는 코드입니다.

a라는 변수에 1을 넣고

b라는 변수에 2를 넣은 후

c 라는 변수에 a와 b를 더한 값을 넣고

그 결과 값을 출력해서 보는 프로그램입니다.

실행을 해보면, 

1+2=3

이런 결과가 화면에 출력됩니다.

직접 실행해 보고 싶으신 분들은 아래 링크로 가서 해보세요.

GCC 컴파일러 온라인

온라인 C 컴파일러

Language를 c로 선택하고, 코드를 넣은 후 Run it 을 누르면 그 아래 결과 값이 나옵니다.

( 와... 제가 처음 공부할 때는 볼랜드 C 이런 거 깔고.. 아니면 Visual c 깔고 그랬는데 참 편리하네요. )

 

void main (void)라는 것이 main 함수입니다.

main 함수라는 것은 모든 프로그램의 시작점입니다.

아무리 복잡한 프로그램이라 하더라도 main 에서부터 시작된다는 것이지요.

앞 뒤로 붙어있는 void에 대해서는 함수의 구조에서 다시 다루겠습니다.

지금은 모든 프로그램이 main 함수에서 시작된다는 것만 알면 됩니다.

또 앞으로 당분간 예제 코드들은 위와 같이 main 함수 내에서 모두 실행됩니다.

 

그럼 메인 함수의 중요한 문법을 설명하겠습니다.

#include   <stdio.h>

#include 는 다음에 나올 < **.h > 파일을 본 프로그램에 포함하라는 뜻입니다.

해석하자면 stdio.h 파일을 본 프로그램에 포함시키라는 뜻이 됩니다.

stdio.h 는 본 프로그램에서 printf 함수를 사용하기 위해 추가한 라이브러리입니다.

 

void main(void)
{
  어쩌고 저쩌고;
}
 

main 함수를 포함해 모든 함수들은 위와 같이 중괄호로 감싸 져야 합니다.

또한 어쩌고 저쩌고 뒤에 붙인 ';' 세미 콜론은 하나의 명령이 끝났음을 의미합니다.

C 언어에서는 ; 가 명령의 끝을 나타내지 줄 바꿈은 의미가 없습니다.

예를 들어 다음에 나오는 코드는 맨 처음 예시한 main 함수와 같은 코드입니다.

void main(void){int a;int b; 
int c; a=1; b=2;
c=a+b;printf("%d+%d=%d\n",a,b,c);}

줄 바꿈, 띄어쓰기는 아무런 의미가 없습니다.

다만, 이 코드를 보는 입장에서 해석이 힘들다는 문제가 있을 뿐입니다.

다른 말로 코드의 가독성이 떨어진다는 것입니다.

코드는 다른 사람들이 봤을 때 쉽게 해석이 되도록 가독성 높게 코딩하는 것도 매우 중요합니다.

그래서 일정한 규칙도 있어요. ( 잘 따르지는 않지만..)

그러한 규칙은 가독성을 높이기 위함도 있지만, 에러를 줄이는 방법으로도 중요합니다.

이러한 규칙들은 앞으로 글을 올리면서 하나씩 나올 때마다 알려 드리겠습니다.

오늘 나온 내용 중에는 아래 두 가지만 기억하세요.

 

- 하나의 명령이 끝나는 세미콜론 ; 이후에는 줄 바꿈을 하라 

- 중괄호 안의 코드는 우측으로 1 탭만큼 밀어넣기 하라.

 

프로그램은 이런 함수들로 구성되어 있어요.

함수란 특정 기능을 하는 모듈이라고 생각하면 됩니다.

수학에서 함수 f(x)와 같은 개념이에요.

그 함수에 어떤 값을 넣으면, 그 함수의 기능에 따라 값이 처리되고 결과 값이 나오는 식이죠.

이때 그 값을 넣는 것이 함수 이름 뒤 ( ) 괄호 안에 들어 있는 것 들이고요,

결과로 나오는 값의 타입이 함수의 이름 앞에 붙는 것입니다.

void main(void)

에서 앞의 void는 main 함수가 끝났을 때  결과 값을 반환하지 않는다는 뜻이고요,

뒤 괄호 안의 void 는 실행할 때 어떤 인자 값을 받지도 않는다는 뜻입니다.

만약 아래와 같이 선언되었다면,

int main( int a, int b)

main 앞의 int 는 이 main 함수가 종료되었을 때 반환할 값이 4byte 형태의 정수임을 말합니다.

뒤에 붙은 int a, int b 는 이 main 함수가 실행될 때 4바이트 정수 두 개를  받아들인다는 뜻입니다.

 

main 함수는 프로그램의 시작점이기 때문에 종료되었을 때 호출한 프로그램은 바로 운영체제 또는 이 프로그램을 실행시킨 다른 프로그램이 됩니다.

반환하는 값이 있을 경우 프로그램의 마지막에 다음과 같은 코드를 추가해 주어야 합니다.

return 0;

return 뒤에 오는 값이 반환해 주는 값이 됩니다.

main 함수는 운영체제나 이 프로그램을 실행시킨 다른 프로그램에게 반환하게 되는데요.

그것은 이 프로그램이 정상 종료되었는지 여부를 알려주기 위함이 가장 큰 목적입니다.

만약 이 프로그램에 오류가 있어서 중간에 강제로 종료되어 버렸다면, 마지막 코드인 return 0 을 실행하지 못했겠지요.

그러면 운영체제에서는 그 문제를 인식할 수 있게 되는 겁니다.

또는 무엇인가 오류가 있어서 종료 시 그 문제점을 운영체제에게 알려줘야 할 때 return 1;  과 같이 다른 값을 반환시키기도 해요.

다음 시간에는 int 가 무엇인지 알아봐야 겠군요.

댓글