세 형태의 차이점에 대해 이야기해보고자 한다.
사실은 별 차이 없다고 한다.
간략하게 정리하자면 아래와 같다.
함수 정의 앞에 붙은 데이터 형은 함수의 리턴값의 데이터 형이고 int main()이면 main()함수가 종료할때 정수형 값을 리턴하겠다는 뜻이다. void main() 이면 함수가 종료할때 아무 값도 리턴하지 않겠다는 뜻이다. 그리고 그냥 main()은 void main()과 같다고 한다.
main() 함수는 프로그램의 엔트리 포인트이고 운영체제가 실행시켜주는 함수라고 한다.
그래서 main() 함수의 리턴값은 운영체제가 받아보게 된다고 한다.
운영체제는 프로그램이 종료할때 main() 함수의 리턴값을 받고 이를 통해 프로그램이 왜 종료되었는지 판단한다고 한다. 보통 main()이 0을 리턴하면 정상 종료로 생각하지만 0 이외의 값을 리턴하면 비정상 종료로 간주한다고 한다.
그런데 이 판단은 운영체제의 몫이기 때문에 main() 함수가 어떤 값을 리턴하는지는 사용자에게 중요하지 않다고 한다.
그래서 운영체제에는 의미가 있을진 모르지만 사용자에게는 별 의미가 없다고 한다. (아 물론 개발자에게는 의미가 있겠지용ㅎㅎ)
C언어 표준에서 제시하는 가장 이상적인 main() 함수의 정의문은 아래와 같다고 한다.
int mian(int argc, char *argv[], char* env[])
아래 블로그에서 많은 도움을 받았습니다.
감사합니다.
반응형
'C & C++ > C' 카테고리의 다른 글
[C] 메모리와 변수의 lifetime으로 인한 예상치 못한 결과 (0) | 2021.10.08 |
---|---|
[Linux] Ubuntu c programming - file open /read /write (0) | 2021.09.30 |
[C] C언어 세그멘테이션 오류 (코어 덤프됨) (0) | 2021.09.29 |
[Linux] fcntl.h와 unistd.h (0) | 2021.09.14 |
[C] 4년이 지나서 다시보는 C언어 - 핵심 정리 (0) | 2021.03.06 |