(int argc, char *argv[])는 뭘 하는 건가요?


저는 보통 int main() 같이 쓰는데

C++ IDE에서 작업하고 있으면 main함수를 자동으로 int main(int argc, char *argv[])로 만들어줘요.

인자는 함수를 부를 때 넣는 건데 메인 함수는 자동으로 실행되니까 제가 메인 함수에 인자를 넘길 수가 없는 거 아닌가요? 왜 저런 걸 쓰죠??

  • 2016년 01월 15일에 작성됨

조회수 1281


1 답변


좋아요
0
싫어요
채택취소하기

C/C프로그램이 명령어 인자를(command line argument)를 받기 위해 씁니다.

argcargv가 가리키고 있는 스트링 개수를 나타냅니다.

보통은 argc(argument count), argv(argument vector)로 쓰는 게 관행인데, (int num_args, char** arg_strings)같이 다른 identifier를 써도 괜찮습니다.

예를 들면

#include <iostream>

int main(int argc, char** argv) {
    std::cout << "Have " << argc << " arguments:" << std::endl;
    for (int i = 0; i < argc; ++i) { //인자 개수(argc)만큼 출력
        std::cout << argv[i] << std::endl;
    }
}

코드를 ./test a1 b2 c3같이 실행하면

Have 4 arguments:
./test
a1
b2
c3

가 출력됩니다.

  • 2016년 01월 15일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close