본문 바로가기

윤성우의 C Programming

main 함수로의 인자 전달

 

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]: 바나나