GTA 게임을 떠올려보자 npc에게 여러분은 종종 명령을 내린다. 예를 들어, "동쪽으로 가라", "문을 열어라", "차를 뺐어서 도망가라" 같은 명령이다.
프로그램에게 인자를 전달하는 것도 비슷하다. 여러분이 프로그램을 시작할 때 어떤 명령을 주느냐에 따라 프로그램은 다르게 동작하게 된다.
main 함수는 함수가 시작되는 첫 번째 관문이다. main 함수에서는 인자를 전달받을 수 있는데 우리가 프로그램에게 이렇게 해줘, 저렇게 해줘라고 어떤 명령을 줄수 있는데 이 명령들을 "인자"라고 한다. 그리고 이 인자들은 프로그램이 시작될 때 main 함수로 전달된다.
main 함수로 인자를 전달받는 일반적인 형태는 다음과 같다:
int main(int argc, char *argv[]) {
// 함수 본문
}
argc와 argv란?
main 함수는 표준 C 프로그램의 진입점(entry point)이며, 특별한 형태의 매개변수를 통해 외부로부터 정보를 받을 수 있다. 이 매개변수가 바로 argc와 argv다.
- argc (Argument Count): 프로그램에 전달된 인자의 총 개수를 나타내는 정수다. 프로그램 이름 자체도 인자로 간주되므로, argc의 값은 항상 1 이상이다.
- argv (Argument Vector): 인자의 내용을 담고 있는 문자열 배열이다. argv[0]은 프로그램의 이름을 나타내며, argv[1]부터 프로그램에 전달된 실제 인자들을 참조한다.
여기서 argc는 사용자로부터 받은 인자의 수를 나타내며, argv는 그 인자들을 문자열로 저장한 배열을 가리킨다. 이를 통해 개발자는 프로그램 실행 시 전달된 인자에 따라 다양한 작업을 수행할 수 있다.
다음 예제는 사용자로부터 전달받은 인자들을 출력하는 간단한 C 프로그램이다.
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("인자의 총 개수: %d\n", argc);
for(int i = 0; i < argc; i++) {
printf("argv[%d]: %s\n", i, argv[i]);
}
return 0;
}
이 프로그램은 argc를 사용해 전달받은 인자의 총 개수를 출력하고, argv 배열을 순회하며 각 인자의 내용을 출력한다. 예를 들어, 프로그램을 "./program 사과 바나나"라는 인자와 함께 실행하면 다음과 같은 출력을 볼 수 있다:
인자의 총 개수: 3
argv[0]: ./program
argv[1]: 사과
argv[2]: 바나나
'윤성우의 C Programming' 카테고리의 다른 글
Chapter 22 구조체와 사용자 정의 자료형 1 (2) (0) | 2024.03.10 |
---|---|
Chapter 22. 구조체와 사용자 정의 자료형1 (1) (0) | 2024.03.08 |
Chapter 19. 함수 포인터와 void 포인터 (1) | 2024.03.05 |
'배열 포인터' 와 '포인터 배열'을 혼동하지 말자 (0) | 2024.03.02 |
2차원 배열 arr, arr[0], arr[0][0] 의 차이 (0) | 2024.03.02 |