命令行参数

托管环境(正常类型 - 而不是独立环境)中运行的 AC 程序必须具有 main 功能。它传统上定义为:

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

注意,argv 也可以,并且经常被定义为 char **argv; 行为是一样的。此外,参数名称可以更改,因为它们只是函数中的局部变量,但 argcargv 是常规的,你应该使用这些名称。

对于代码不使用任何参数的 main 函数,请使用 int main(void)

程序启动时会初始化这两个参数:

  • argc 初始化为从命令行给予程序的空格分隔参数的数量以及程序名称本身。
  • argv 是一个 char 指针(字符串)数组,包含在命令行中给出的参数(和程序名称)。
  • 有些系统会在“shell 中”扩展命令行参数,而有些则不会。在 Unix 上,如果用户输入 myprogram *.txt,程序将收到一个文本文件列表; 在 Windows 上,它将收到字符串“*.txt”。

注意:在使用 argv 之前,你可能需要检查 argc 的值。从理论上讲,argc 可能是 0,如果 argc 为零,则没有参数,argv[0](相当于 argv[argc])是一个空指针。如果你遇到此问题,这将是一个具有托管环境的异常系统。同样,虽然很不寻常,但是没有关于程序名称的信息是可能的。在这种情况下,argv[0][0] == '\0' - 程序名称可能为空。

假设我们像这样启动程序:

./some_program abba banana mamajam

然后 argc 等于 4 和命令行参数:

  • argv[0] 指向 ./some_program(程序名称),如果程序名称可从主机环境获得。否则一个空字符串 ""
  • argv[1] 指向 abba
  • argv[2] 指向 banana
  • argv[3] 指向 mamajam
  • argv[4] 包含值 NULL

另请参阅 main() 在 C 和 C++中返回的内容, 以获取标准中的完整引号。