main 的参数 argc 和 argv 被用作向程序发送参数的一种方式,可能最熟悉的方式是使用良好的终端,用户可以在其中键入 @ 987654329@。这里cat这个词是一个程序,它获取一个文件并将其输出到标准输出(stdout)。
程序接收argc 中的参数数量和argv 中的参数向量,在上面的argument c中,数量将是两个(程序名称算作第一个参数)并且 argument vector 将包含 [cat,file,null]。而最后一个元素是空指针。
通常,你会这样写:
int // Specifies that type of variable the function returns.
// main() must return an integer
main ( int argc, char **argv ) {
// code
return 0; // Indicates that everything went well.
}
如果您的程序不需要任何参数,则以以下方式编写main-函数同样有效:
int main() {
// code
return 0; // Zero indicates success, while any
// Non-Zero value indicates a failure/error
}
在 C 语言的早期版本中,在 main 之前没有 int,因为这是暗示的。今天,这被认为是一个错误。
在兼容 POSIX 的系统(和 Windows)上,可以使用第三个参数 char **envp,其中包含程序 environment variables 的向量。 main 函数的参数列表的进一步变体存在,但我不会在这里详细说明,因为它是非标准的。
另外,变量的命名是约定,没有实际意义。坚持这一点总是一个好主意,这样您就不会混淆其他人,但将main 定义为同样有效
int main(int c, char **v, char **e) {
// code
return 0;
}
对于第二个问题,有几种方法可以向程序发送参数。我建议您查看 POSIX 标准的exec*()family of functions,但使用system("command arg1 arg2") 可能更容易,但使用system() 通常不受欢迎,因为它不能保证在每个系统上都能正常工作。我自己没有测试过;但是如果没有bash、zsh 或其他在*NIX 系统上安装的shell,system() 将失败。