In fact, it should be int main(int argc, char **argv), int main(int argc, char *argv[]), or int main(int argc, char argv[][]). argv is an array of strings, which in turn are arrays of bytes. Also, according to the ANSI C standard, main does not have to return void, but ANSI C++ says it does. (Don't you just love consistancy in standards?]) I might also had that (traditionally) argc is an abriviation for "argument count", and argv is an abriviation for "argument values", although you can call those variables anything you want as long as there are two of them, and the first is an int, and the second is char **. (Therefore int main(int foo, char **bar) would also be an appropriate title.)