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

조회수 24719회

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

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

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

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
    

    가 출력됩니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)