C++ 프로그램의 main 함수에서 자주 보이는 int argc와 char *argv[]는 각각 다음과 같은 의미를 가집니다.
- argc: argument count(인자 개수)의 줄임말로, 프로그램에 전달된 인자의 총 개수를 나타냅니다.
- argv: argument values(인자 값)의 줄임말로, 전달된 인자들을 문자열 배열 형태로 저장합니다.
이 두 변수는 프로그램이 실행을 시작할 때 main 함수로 자동으로 전달됩니다. 프로그램을 실행할 때 명령줄(command line)을 통해 인자를 함께 넘겨줄 수 있는데, 예를 들어 다음과 같습니다.
$ ./a.out hello
여기서 hello가 실행 파일에 전달되는 인자이며, 이 값은 프로그램 내부에서 얼마든지 접근하여 사용할 수 있습니다.
예제 코드
전달받은 인자의 개수와 내용을 출력하는 간단한 예제입니다.
#include<iostream>
using namespace std;
int main(int argc, char** argv) {
cout << "This program has " << argc << " arguments:" << endl;
for (int i = 0; i < argc; ++i) {
cout << argv[i] << endl;
}
return 0;
}실행 방법
위 코드를 컴파일한 뒤 아래처럼 실행해 보겠습니다.
$ ./a.out hello people
이 경우 출력 결과는 다음과 같습니다.
This program has 3 arguments
출력 결과
C:\Users\user\Desktop\hello.exe hello people
출력 결과를 보면 인자 개수가 3개로 표시됩니다. 그 이유는 argv[0]에는 항상 프로그램 이름(실행 파일 경로)이 저장되고, 실제로 사용자가 입력한 hello와 people이 각각 argv[1], argv[2]에 담기기 때문입니다. 즉, argc에는 프로그램 이름까지 포함된 개수가 들어간다는 점을 기억하면 됩니다.