본문 바로가기

프로그래밍/C 기초

[C언어 강좌] #19 - main함수

저번시간에 함수에대해서 배워봤습니다.

우리가 맨날 사용하고있던 main도 함수입니다.

main함수는 프로그램이 시작하는 지점입니다. main함수가 없다면 시작지점이 없기때문에 프로그램이 실행될수 없습니다.


평소에 우리는 다음과같이 main함수를 작성했었습니다.

int main(void) {

return 0;

}

예제를 작성할때는 리턴을 적지 않았지만 리턴이 적혀있지 않으면 자동으로 1을 반환하게됩니다.

확실하게 해주려면 가능한 적어주는게 좋죠.

mian함수는 void를 인자로 받고있습니다. void는 존재하지 않는다는뜻이죠.

받는 인자가 없다는것을 의미합니다. 근데 반환형이 int형이네요?


main함수는 정수를 반환합니다. 근데 함수에서 반환값은 함수를 호출한곳으로 돌아간다고 했었죠?

프로그램의 시작점인 main함수의 반환값은 어디로 반환되는것일까요?


윈도우키+알트를 누르면 실행창이 켜질겁니다. 거곳에 cmd를 입력하면 cmd창이 나옵니다.

그곳에서도 프로그램을 실행할수 있죠. cmd로 프로그램을 실행했다면 cmd에서 그 리턴값을 받게됩니다.

리눅스 쉘에서 실행하면 쉘에서 받게 되겠고요. 탐색기에서 더블클릭으로 실행하신거라면 그 탐색기에서 리턴값을 받을겁니다.



위와같은 코드를 짜봤습니다. 그리고 cmd로 실행해보겠습니다.




test.exe를 실행했더니 Hello가 출력하는걸 볼수 있습니다.

그리고 반환값을 보고싶으면 echo %errorlevel%을 입력해주시면 됩니다.


그럼 반환값 왜 사용될까요?

반환된 값을 보려면 errorlevel을 입력하면 되죠. 프로그램이 정상적으로 작동하는지 볼수 있도록 반환해주는겁니다.

return으로 100이 반환됐다면 정상적으로 종료된것이고 1이 반환됐다면 정상적으로 종료되지 않았겠죠.

보통 return 0을 적어서 성공적으로 종료될경우 0을 반환하고 실패할경우 1을 반환합니다.

반환값을 정하는건 프로그래머 맘대로 하시면 됩니다. 상황에따라서 return 0, return 1, return 2를 코드에 적어주고 리턴값에 따라 어디서 종료됐는지를 쉽게 알아볼수있죠.


근데 가끔 보면 반환되는 형태가 void인 코드도 있습니다. 하지만 이건 정상적인 형태가 아닙니다.

원래는 int형으로 반환해야 정상적인 코드라고 볼수 있습니다. void로 작성할경우 환경에따라서 작동하지 않을수도 있습니다.

main함수의 형식은 다음 두가지입니다.

int main(void)

int main(int* argc,  char*  argv[])


근데 int* argc,  char*  argv[]이건 처음보는거죠?



main도 함수기때문에 프로그램을 실행할때 인자를 넘겨줄수 있습니다.

argc는 전달된 인자의 개수, argv[0]은 경로를 나타내고 argv[1]부터 전달된 인자의 값입니다.



이런식으로 main함수에 인자를 줄수도 있습니다.