본문 바로가기
프로그래밍언어/C언어

C언어의 기본 문법 구조 - main()함수

by J코딩 2021. 8. 13.
반응형

1. main() 함수는 프로그램 실행 시 운영체제에 의해서 맨 처음 호출되고 맨 나중에 return에 의해 종료된다.

main() 함수는 프로그램이 실행될 때 가장 먼저 호출되는 함수입니다. 이 함수는 운영제체가 호출합니다.

C 프로그램의 경우 소스 파일을 컴파일하고 링크해서 만든 실행 파일(.exe)을 실행하면 운영체제가 실행 파일 내의 main() 함수를 가장 먼저 호출하기로 사전에 약속??되어 있스브니다. C언어로 작성된 프로그램은 main() 함수는 반드시 하나만 가지고 있어야 합니다.

다음은 main() 함수의 선언 형태를 나타낸 것으로 출력 형태는 int, 함수명은 main, 입력형태(매개변수라고 한다)는 void라고 하겠습니다.

1. int : Integer의 줄임말로 정수를 뜻합니다.

2. main : main이라는 이름을 가진 함수를 뜻합니다.

3. void : 비어있다는 의미입니다.

 

전체적으로 해석을 해보면 입력없이(3번) main() 함수(2번)를 호출해서 정수로 출력(1번)하라는 의미입니다.

이번에는 {}의 대한 의미에 대해서 알아보겠습니다.

함수의 시작을 알리는 {(1번)함수의 종료를 알리는 }(3번) 사이에 main함수의 실제로 해야 하는 기능(2번)을 작성합니다.

이 영역이 실제로 함수가 해야 하는 기능을 정의하는 영역이라고 생각하시면 되겠습니다.

 

2. 표준 라이브러리 함수와 헤더 파일은 소스 작성을 편하게 해줍니다.

표준 라이브러리 함수인 printf()는 문자열이나, 문자, 상수, 변수 등을 모니터에 출력하는 기능을 갖는 함수입니다.

문자열을 모니터에 출력하고 싶은데 printf() 함수가 없다면 참으로 막막할 것입니다. 그러나 printf() 함수를 누구라 호출해서 쓸수 있게 제공하고 있으므로 printf()와 같은 함수를 표준 라이브러라 함수라고 합니다.

 

그럼 컴파일러는 어떻게 표준라이브러리 함수인 printf()의 동작을 눈치챘을까요? 그것은 바로 미리 정의해 놓은 전처기인 <stdio.h> 헤더 파일을 통해서 입니다.

https://jcoding7.tistory.com/entry/C%EC%96%B8%EC%96%B4%EC%9D%98-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%95-%EA%B5%AC%EC%A1%B0-%EC%A0%84%EC%B2%98%EB%A6%AC%EC%99%80-%ED%97%A4%EB%8D%94-%ED%8C%8C%EC%9D%BC

 

C언어의 기본 문법 구조 - 전처리와 헤더 파일

1번라인처럼 #include 를 보면 특수 문자 '#'이 있습니다. 이것을 전처리기라고 합니다. 전처리기란? 컴파일러가 컴파일을 수행하기 전에 먼저 처리하는 것을 의미합니다. https://jcoding7.tistory.com/entry

jcoding7.tistory.com

표준 라이브러리 함수의 사용하기 위해 헤더 파일의 인크루드를 알리는 선언은 프로그램 작성 시 먼저 해야하는 작업(전처기)입니다.

 

3. 세미콜론은 문장의 끝을 의미하는 마침표와 같은 존재입니다.

함수의 기능 영역에 세미콜론(;)이 있습니다. 편지나 보고서와 같은 글을 쓸 때 여러분은 문장이 끝났다는 의미로 마침표를 찍습니다. 이처럼 C언어에서 세미콜론은 연산을 수행하는 문장의 끝을 나타내는 마침표를 의미합니다. C언어로 작성된 일련의 프로그램 수행 문장들을 세미콜론을 통해서 문장의 끝으로 인식하게 하는 것입니다.

 

4. return은 반환 과 종료의 의미를 갖는다.

함수의 기능 영역에 있는 return의 의미는 두 가지입니다. 첫째로 함수를 호출하는 영역으로 값을 반환한다는 의미이고, 둘째는 main()함수를 종료한다는 의미입니다.

 

그럼 main() 함수에서 0을 반환하는 이유는 무엇일까? 프로그램이 실행되면 운영제체가 main()함수를 가장 먼저 호출하고, 운영체제에게 0을 반환하면, 운영체제는 반환값이 0이면 정상적으로 종료되었다고 판단하며, 0이 아닌 값이면, 정상적으로 종료되지 않았다는 것으로 판단하게 됩니다.

반응형

댓글