코딩을 해서 문제를 풀어서 맞긴 맞아도 리턴 개념이 잘 안 박히는데main 함수에서 return이 0인 경우는main 함수가 주는 값이 결과적으로 0이라는 건데....이 개념이 잘 안 잡히네요...
메인은 0을 리턴하면 정상종료, 나머진 비정상종료라고 알고계심 됩니다
어디서 main을 자꾸 부르는 것일까... 이 0은 어디로 가는 것일까...
네가 프로그램을 실행시키면 그 명령은 OS 의 shell 을 통해 전달돼.
그래서 shell 이 실행파일을 실행시키면 메모리 로더가 실행파일을 메모리에 올려놓고, 전역초기화가 끝난 뒤 entry point 인 main 함수로 이동하거든.
그 프로그램의 실행결과를 caller 인 shell 이 받아볼 수 있도록 하기 위해서 return 을 해주는건데 관습적인 부분이 강해.
그러니까 크게 중요하지 않다는거지. 예전에 하나의 프로그램이 서브 프로그램을 실행시키는 형태로 프로그램을 만들던 시절의 잔재 같은거야.
걍. 채팅방에서 아무도 안듣는데 "안녕히 계세요~" 하는거랑 비슷한거라고 생각하면 돼.
혹시 들을 사람이 있을 수도 있으니까 : )
그러니까 retrun 0; 이라고 써도 되고 return; 이렇게만 써도 되는거네요
대신 return 변수; 이런 건 안 되고
다 되는데, return 에 값을 주려면 main 함수가 void 리턴타입이 아니어야하고,
void 타입으로 선언했다면 return; 이 가능하지.
함수를 선언할때 리턴이 있는지, 어떤 타입을 리턴하는지 명시해야하고, 거기에 맞춰 리턴해줘야 한다는것.
만약 마지막에 return; 할꺼면 아예 안해도 돼. 함수 정의 영역의 마지막 중괄호가 묵시적 return 이니까.
함수가 어떻게 호출되고 어떻게 파라메터가 전달되고 어떻게 return 되는지, 스택의 변화가 어떻게 되는지 공부하면 아하! 하게 될거야.
ㅇㅋㅇㅋ 감사합니다!!!