Signup/Sign In
Ask Question
Not satisfied by the Answer? Still looking for a better solution?

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

In numerous C++ IDE's and compilers, when it produces the main function for you, it would seem that this:
int main(int argc, char *argv[])


At the point when I code C++ without an IDE, just with an order line compiler, I type:
int main()


with no parameters. What's the significance here, and is it vital to my program?
by

2 Answers

akshay1995
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 <iostream>

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

Running it with ./test a1 b2 c3 will output

Have 4 arguments:
./test
a1
b2
c3
RoliMishra
argc is the number of arguments being passed into your program from the command line and argv is the array of arguments.

You can loop through the arguments knowing the number of them like:

for(int i = 0; i < argc; i++)
{
// argv[i] is the argument at index i
}

Login / Signup to Answer the Question.