What does int argc, char *argv[] mean in C/C++?

argc stands for argument count and argv stands for argument values. These are variables passed to the main function when it starts executing. When we run a program we can give arguments to that program like −

$ ./a.out hello


Here hello is an argument to the executable. This can be accessed in your program. For example,

using namespace std;
int main(int argc, char** argv) {
   cout << "This program has " << argc << " arguments:" << endl;
   for (int i = 0; i < argc; ++i) {
      cout << argv[i] << endl;
   return 0;

When you compile and run this program like −

$ ./a.out hello people


This will give the output −

This program has 3 arguments


Note that the first argument is always the location of the executable executing.