A command-line argument is a value supplied when a program is invoked. For a C program, `main` can receive those values through `argc` and `argv`. Each argument arrives as a string, even when the program intends to use it as a number. section 7.2
int main(void); int main(int argc, char* argv[argc+1]);
The second form of `main` provides `argc` for processing the argument vector `argv`. `argv[0]` points to the program invocation name—usually the executable name—and `argv[argc]` is a null pointer. Use `argc` to determine which argument positions to process. section 7.2
Interpreting a numeric argument
`double const a = strtod(argv[i], nullptr);` decodes a double from an argument string. The command line does not perform that conversion for the program; interpreting the string is the program’s responsibility. section 7.2
TAKEAWAY: Compiler command-line arguments and arguments passed to a running program are different uses of the same idea. For example, `c17 -Wall -o getting-started getting-started.c -lm` invokes a compiler with arguments; `./getting-started` then invokes the resulting program. Compiler names and accepted arguments depend on the platform. section 1.2
A command-line argument is also distinct from a C function-call argument. In `printf(..., i, A[i], A[i]*A[i])`, expressions supply values directly to a function call; `argv` instead holds strings received when the program starts. section 2.4.2 section 7.2













