Intro
main 함수의 매개변수는 보통 아무것도 사용하지 않지만(int main()) 경우에 따라서는 int main (int argc, char* argv[])와 같은 모양의 main 함수를 마주치곤 한다.
보통 C를 처음배우고 윈도우 상에서 Visual Studio를 사용해 프로그램을 작성한다면, main 함수의 명령 인수(Argument)는 거의 사용하지 않는다. 그러나 리눅스 계열에서는 종종 사용하기도 하며, 필요에 따라서는 윈도우상에서도 충분히 사용할 수 있다.
main함수의 매개변수는 위에서 언급한 것처럼 두가지로 구성되어있다.
int argc
char* argv[]
argv[0]
은 프로그램의 실행경로로 항상 고정되어 있다.아무 정보도 전달하지 않은채 C 프로그램을 실행할 경우
#include <stdio.h>
int main(int argc, char* argv[])
{
int i;
printf("Hello World!\n");
printf("argc = %d\n", argc);
for(i = 0; i < argc; i++)
{
printf("argv[%d] = %s\n", i, argv[i]);
}
return 0;
}
🖥️ 출력
Hello World!
argc = 1
argv[0] = C:\Users\Desktop/Programming\...\hello.exe
아무정보도 전달하지 않으면 기본적으로 argv[0]에 실행경로가 들어가 있으며, 실행경로 정보 1개 뿐이므로 argc는 1이 된다.
cmd(명령 프롬프트, 일명 도스창)를 열어서 사용한다. 여기서는 프로그램을 실행하기 위해서 경로를 입력하고 끝에 ~~.exe를 치면 실행이 된다. 혹은 현재 위치가 해당 exe가 있는 디렉터리라면 ~~.exe만 쳐도 실행이 된다.
예를 들어 hello.exe가 실행되는 main 함수에 Would you like a cup of tea?라는 정보를 전달하고자 한다면 다음과 같이 작성하면 된다.
(경로)/hello.exe Would you like a cup of tea?
이렇게 입력하고 엔터를 치면 hello.exe가 실행되면서 Would you like a cup of tea?라는 정보가 main 함수의 argv에 전달된다.
이때, argv에는 다음과 같이 전달된다.
argv[0] // 항상 실행경로로 고정된다. 즉 C:\Users\Desktop\Programming...\hello.exe (절대경로 혹은 상대경로로 저장된다.)
argv[1] // "Would"
argv[2] // "you"
argv[3] // "like"
argv[4] // "a"
argv[5] // "cup"
argv[6] // "of"
argv[7] // "tea"
그리고 argc에는 그 갯수인 8이 들어가게 된다.
출처 : https://blog.naver.com/sharonichoya/220501242693, (2015. 10. 6.)