How to pass command line arguments to a c program

I've known how to write a program that accepts command line arguments ever since I learned to program. What I don't understand is how these parameters get their values. Hopefully I don't have these two mixed up but there is a difference between an argument and a parameter. An argument is the value given to the function when it is called such as: foo( a, b, c); where a, b, and c are the values. A parameter is the values that are inside the function while is being called.

So my question is how does a person pass command line arguments to a program? I understand how to read the arguments, that argc is the number of arguments, argv is a pointer to an array of strings containing the arguments, etc. etc. but I just don't know how to give those arguments a value..

I'm looking for information for both C and C++. I'm sort of a novice at this.


In a Windows environment you just pass them on the command line like so:

myProgram.exe arg1 arg2 arg3

argv[1] contain arg1 etc

The main function would be the following:

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

On *nix:

$ ./my_prog arg1 arg2

On Windows command line:

C:\>my_prog.exe arg1 arg2

In both cases, given the main is declared as:

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

argc will be an int with a value of 3, argv[1] = "arg1", argv[2] = "arg2", additionally, argv[0] will have the name of the program, my_prog.

Command line arguments are normally separated by space, if you wish to pass an argument with a space, like hello world, use a double quote:

$ ./my_prog "hello world"