미국 공학박사의 코딩 연구소

main 함수 해부하기 - 함수란?

지금까지, main() "함수"라고 불러 왔는데요.
그동안 함수 (Function)라는 것이 무엇인지 궁금했었죠? 이제, 함수에 대해서 공부할 시점이 되었네요.



강의들은 모두 무료입니다. 단, 저작권은 키클 코딩랩 에 있으며, 무단 복제 및 배포를 엄금합니다.
이를 어길 시, 본 사이트의 서버가 미국에 있으므로, 미국법에 의해 처벌될 수도 있습니다.




함수(Function)의 정의와 구현

원하는 폴더/디렉토리를 만들고 gedit 문서 편집기를 이용하여 "lec4_main.c"나 "lec4_main.cpp"라는 이름의 파일을 만들어 볼게요.
그리고, 강의 main 함수 해부하기 - 문자형에서 코딩한 main 함수의 내용을 복사해서, 아래처럼 새로 만든 파일에 붙여넣어 보세요. 이 코드에 새로운 코드들을 추가해 나갈 것이랍니다.

lec4_main.c 혹은 lec4_main.cpp
int main(int argc, char *argv[ ]) {
	int myvar = 3;
	char mychar = 'a';
	char mychar2 = 76;
}

지금까지 main() "함수"라고 불러 왔는데요. 도대체 함수가 무엇인지 많이 궁금했었죠? 이제, 그 함수라는 것이 무엇인지에 대해서 공부할 시점이 되었어요.

[문법] 함수 (Function)

위 설명은 문법 노트에서도 볼 수 있다는 것 잊지 마세요.




main 함수 살펴보기

main 함수라고 말할 때, 함수가 무엇을 의미하는지 이해가 되었나요?
그럼, 새로운 코드 한 줄 작성하고, main 함수의 구조를 하나씩 확인해 보지요. 아래 줄6을 앞에서 생성한 파일에 추가해 보세요.

lec4_main.c 혹은 lec4_main.cpp
int main(int argc, char *argv[ ]) {
	int myvar = 3;
	char mychar = 'a';
	char mychar2 = 76;
	
	myvar += argc;
}

줄1의 맨 처음에 나오는 int는 main() 함수가 리턴하는 값의 데이터 타입이 정수형이라는 것을 의미하지요. 어떤 값을 리턴하는지는 나중에 설명하도록 할게요.
줄1의 "main"은 main() 함수의 함수 이름을 의미하지요. main()의 경우 함수 이름은 반드시 "main" 이어야 하고, 변경하면 안 된답니다.
줄1의 "( )"안을 보면, main() 함수는 전달인자를 두 개 받는다는 것을 알 수 있지요? 첫 번째 전달인자는 정수형의 argc이지요. 두 번째 전달인자는... 다른 내용을 더 공부해야 설명할 수 있어요. 아쉽지만 나중에 설명할게요.
함수 안의 처리 코드들은 꼭 "{ }"로 감싸야 한다고 했었지요? 그래서, main()도 처리 코드들인 줄2~줄6을 "{ }"로 감싸고 있답니다.
새로 작성한 줄6의 코드는, += 할당 연산자를 이용하고 있는데, "myvar = myvar + argc"라는 의미와 같은 것이죠. 즉, 전달인자로 받은 argc변수에 저장된 값을 줄2에서 선언 및 할당한 myvar와 더한 후, 그 값을 다시 myvar에 할당하라는 의미랍니다.

이제, 강의 첫 대면..main 함수에서 했던 것처럼, 파일을 저장하고 gedit 편집기 닫기를 하세요.
그리고, 아래처럼 터미널에서 "gcc lec4_main.c"나 "gcc lec4_main.cpp"을 실행하여 컴파일하세요.

.../my_folder$ gcc lec4_main.c
.../my_folder$

아무 에러 메세지도 없이 컴파일이 잘 끝났지요?
지금까지 공부하면서 느꼈겠지만, C/C++를 시작하자 만나게 된 main() 함수에는 여러 문법이 적용되어 있답니다. 그래서, main() 함수 하나 끝내는데도 많은 설명이 필요하네요. 하지만, 곧 끝나니까 조금만 더 힘내세요!

강의에서 작성된 소스 코드 (source code)를 다운받으려면, 다음 링크를 클릭하세요: lec4_main.c, lec4_main.cpp

혹시, 이해가 잘 안되는 부분에 대한 질문이 있거나 다루어 줬으면 하는 주제가 있으면, 화면 오른쪽 하단에 "질문하기" 버튼을 이용해 주세요.






발자취

2019-09-11 "키클 코딩랩 - 미국 공학박사 아빠의 코딩 연구소"로 이름 변경
2019-06-28 코딩 교실 공개
2019-03-18 코딩 교실 제작 시작

바로가기
Python 배움터
C/C++ 배움터
About
Contact
Privacy Policy
강의목록
질문하기
처음으로