HiveBrain v1.2.0
Get Started
← Back to all entries
patterncppCritical

What does int argc, char *argv[] mean?

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
argcintdoesmeancharargvwhat

Problem

In many C++ IDE's and compilers, when it generates the main function for you, it looks like this:

int main(int argc, char *argv[])


When I code C++ without an IDE, just with a command line compiler, I type and not use any parameters.

int main()


What does this mean, and is it vital to my program?

Solution

argv and argc are how command line arguments are passed to main() in C and C++.

argc will be the number of strings pointed to by argv. This will (in practice) be 1 plus the number of arguments, as virtually all implementations will prepend the name of the program to the array.

The variables are named argc (argument count) and argv (argument vector) by convention, but they can be given any valid identifier: int main(int num_args, char** arg_strings) is equally valid.

They can also be omitted entirely, yielding int main(), if you do not intend to process command line arguments.

Try the following program:

#include 

int main(int argc, char** argv) {
    std::cout << "Have " << argc << " arguments:\n";
    for (int i = 0; i < argc; ++i) {
        std::cout << argv[i] << "\n";
    }
}


Running it with ./test a1 b2 c3 will output
Have 4 arguments:
./test
a1
b2
c3

Code Snippets

#include <iostream>

int main(int argc, char** argv) {
    std::cout << "Have " << argc << " arguments:\n";
    for (int i = 0; i < argc; ++i) {
        std::cout << argv[i] << "\n";
    }
}

Context

Stack Overflow Q#3024197, score: 924

Revisions (0)

No revisions yet.