C언어를 공부하게 된 이유
올해 3월에 개발을 하겠다고 마음을 먹었지만, 1학기에는 본 전공을 졸업하기 위한 준비를 하느라 개발에만 집중하지 못했고, 여름방학에는 Js로 spa 구현하기 프로젝트를 했다.
이후 2학기때 복수전공을 들으면서 Java와 다른 과목들을 열심히 배웠지만
C언어를 직접적으로 배우진 못하고, C언어를 응용하는 전공들만 배워서 이해하지 못하고 사용하는데만 급급했던 순간이 많았다.
그래서 내년 1학기에 배울 자료구조와 앞으로 코딩테스트 준비를 하면서 배울 알고리즘 공부를 하기 전에, C언어를 짧고 굵게 배우려고 동기들과 교수님께 추천받은 열혈 C 프로그래밍 책을 공부하기 시작했다.
블로그에 정리할 내용
모든 내용을 다 정리하는 것은 그닥 나에게도, 읽는 사람에게도 도움이 안 될 것 같다.
읽다가 궁금증이 생기는 부분을 한 파트씩 공부하고 정리하는 방식으로 작성할 예정이다.
물론 최대한 책과 공식 자료를 참고할 예정이지만 부득이하게 다른 블로그를 참고할 수도 있으니 잘못된 정보를 전달할 수 있다.
언제든 잘못됐거나 틀린 정보가 있다면 댓글로 알려주시면 감사하겠습니다. 더 공부해서 수정하겠습니다.
main 함수가 return하는 자료형이 왜 void가 아닌 int형일까?
사실 아무 생각없이 main 함수의 자료형을 int형으로 작성했었지만, 갑자기 궁금해졌다.
왜일까?
자료형을 void 형으로 놓고 return형을 생략하거나, retrun;으로 작성해도 되지 않는가?
그 이유는 return문을 사용하는 이유부터 알아보면 된다.
return을 사용하는 이유
return문을 사용하는 이유를 보면
1. 함수의 종료
2. 값의 반환
이렇게 두 가지가 있다.
이를 생각해보면, main함수를 호출하는 주체가 운영체제인데, 운영체제에게 프로그램의 종료를 알리기 위해서 정수를 반환한다. -> exit status
이때 exit status가 0이면 정상적으로 종료된 것이고, 1을 반환하면 정상적으로 종료가 안 됐다는 의미이다.
결론
첫째로 호출의 주체인 운영체제에게 프로그램의 종료를 알리기 위함이고
(main 함수의 종료 = 프로그램의 종료를 의미하기 때문),
둘째로 exit status를 정수형으로 return 하기 때문에 main 함수가 반환하는 자료형이 int 형인 것이다.
여담
내가 했던 질문들에 대한 답을 시간을 들여 찾고 나니, 책에서 다른 부분이지만 정리되어 있던 내용들을 종합해 보면 질문에 오히려 명확하게 답이 나오는 부분들이 많았다.
책을 수동적인 자세가 아니라 능동적인 자세로 읽어버릇해야겠다.