It comes to you courtesy of the main() start-up routine (typically) written for you by the compiler writers. argc, argv, (and envp, a pointer to a NULL terminated array of NULL terminated character arrays) (all optional names, btw, just the types are fixed) are optional. The pre-main() code will create the data, but you won't be able to access through those ...