메인 함수를 보면 int main(int argc, char* argv[])
이렇게 되어있는 것을 보셨을 겁니다.
argc argument count
argv argument vector
라고 하며 변수명은 변경되어도 상관없습니다.
#include <stdio.h>
int main(int argc, char* argv[])
{
int i = 0;
printf("전달된 문자열의 수 : %d \n", argc);
for (i = 0; i < argc; i++)
{
printf("%d번째 문자열 : %s \n", i + 1, argv[i]);
}
return 0;
}
main 함수에 어떻게 인자를 전달할 수 있을까요
보통 함수의 호출은
Fuc(1,2);
이런 식으로 사용을 합니다.
main 함수는 프로그램의 실행 시작점이기 때문에
프로그램이 실행되기 전에 전달을 해야 하죠
그래서 cmd 창에서
(실행파일명).exe (인자) (인자) (인자) ....
이렇게 전달할 수 있습니다.
int argc는 전달된 인자의 개수입니다.
실행파일명이 test.exe라고 했을 때
test.exe hello hi 123
이런 식으로 입력을 했다고 한다면
test.exe 인자 개수 1 (실행파일도 인자로 침)
hello 인자 개수 2
hi 인자 개수 3
123 인자 개수 4
argc에는 4가 들어가게 됩니다.
int *argv[]는 인자로 전달한 내용이 저장되는 문자(포인터)열 배열입니다.
(문자열은 문자가 시작하는 주소를 가지고 있기때문에)
배열의 개수는 자동적으로 입력될 때 구분됩니다.
이러한 원리는
int array[] ={1,2,3,4,5} 이러면 자동적으로 배열의 크기가 5가 되듯
int * argv[]={"test.exe","hello","hi","123"}
(숫자도 문자열로 인식)
이렇게 된다고 보시면 됩니다.
그래서 인자의 개수가 많아도 상관없습니다.
비주얼 스튜디오 2015~2019를 사용하고 있다면
매번 cmd 창으로 가지 않고 인자 전달을 해볼 수 있는데요
해당 프로젝트 우 클릭 속성 - 디버깅 - 명령인 수
위와 같이 입력할 수 있습니다.
매번 직접 수정을 해야 합니다.
이 인자는 어떻게 응용할 수 있을까요?
리눅스 명령어를 하나 생각해 봅시다.
ls 목록 리스트를 보는 명령어입니다.
이 명령어 뒤의 인자로 리스트의 옵션이 달라질 수 있습니다.
ls -al 같이 말이죠
-al이 이런 인자입니다.
C언어에서도 실행파일 다음으로 이런 인자를 만들어서
어떤 인자가 들어왔을 때 어떠한 동작을 할 수 있게 구성을 할 수 있겠죠
'컴퓨터 프로그래밍 > C' 카테고리의 다른 글
C언어 메모리 동적 할당 (malloc) (0) | 2019.07.23 |
---|---|
C언어 scanf()에 대하여 (0) | 2019.07.23 |
C언어 1차원 배열 / 문자열 배열 / 배열(포인터 연산) (0) | 2019.07.23 |
C언어 포인터(Ponter) / 다중 포인터 (2) | 2019.07.23 |
C언어 Call by Value / Call by Address (0) | 2019.07.23 |