내용 참고
C++ 기초 플러스 4판 (성안당)
혼자 연구하는 C/C++ (Soen.kr/와우북스)
Microsoft Docs (구 MSDN)
C/C++ 프로그램의 가장 단순한 형태
■ 콘솔이나 화면에 아무것도 띄우지 않고, 프로그램을 시작하자마자 끝낸다.
int main() {
return 0;
}
■ C/C++ 프로그램은 '메인 함수'에서부터 시작된다.
■ 함수에 대해서는 이후에 더 자세하게 다룰 것이며 여기서는 'main'이라는 함수에 집중한다.
반환값 함수명(함수인자) {
함수 내용;
return 값; (함수의 반환값)
}
■ C/C++ 프로그램의 시작점이 되는 함수의 이름은 main 이며 이는 임의로 변경할 수 없다.
■ main 함수의 반환값은 int가 원칙이지만 컴파일러에 따라서 void도 허용된다.
■ main 함수는 프로그램이 정상적으로 종료되면 0이 반환된다.
■ 대부분의 프로그램에서 이 값은 큰 의미를 갖지 않기 때문에 컴파일러들이 void main을 암묵적으로 허용하는 것이다.
■ 하지만 이 또한 현재는 많은 컴파일러들이 금지하는 추세이므로 int main()으로 적도록 하자.
■ C언어에서는 그냥 곧바로 main() 으로 시작하는 경우도 있었지만 C++에서는 허용되지 않는다.
main함수의 완전한 형태
■ main함수의 인자는 많이 쓰이지 않으므로 이런게 있다는 것만 알아두는 정도로 넘어가도 된다.
#include <iostream>
using namespace std;
int main(int argc,char *argv[],char *env[])
{
cout << argc << endl; // argv 문자열 배열로 넘어온 문자열의 수
cout << argv[0] << endl; // argv 문자열 배열의 첫번째 문자열
cout << env[0] << endl; // env 문자열 배열의 첫번째 문자열
return 0;
}
■ main함수의 인자는 총 3가지이며 뒤에서부터 생략이 가능하다.
■ 그러므로
int main(int argc,char *argv[],char *env[]),
int main(int argc,char *argv[]),
int main(int argc),
int main() 의 4가지 형태가 가능하다.
■ 첫번째 인수인 int argc는 운영체제가 이 프로그램을 실행할 때 전달한 인수의 수이다.
■ 기본적으로 프로그램명이 전달되므로 따로 전달한 것이 없어도 이 값은 1이 된다.
■ 두번째 인수인 char* argv[]는 운영체제가 이 프로그램을 실행할 때 전달한 인수들이다.
■ 이 인수들은 문자열로 기본적으로 프로그램의 이름이 전달된다.
■ 세번째 인수인 char* env[]는 운영체제의 환경변수이다.
■ 이를 이용하지 않아도 필요한 환경 변수 값을 알아낼 수 있는 방법이 있기 때문에 거의 쓰이지 않는다.