【问题标题】:Why is no argument passed in main function? [duplicate]为什么主函数没有传入参数? [复制]
【发布时间】:2019-01-09 18:10:17
【问题描述】:

每当我们在任何代码中定义 main() 函数时,为什么不在其中传递任何参数?

【问题讨论】:

标签: c++ c


【解决方案1】:

main() 的 C++ 标准认可变体是:

int main () { body }
int main (int argc, char *argv[]) { body } 

main() 的 C 标准认可的变体是:

int main (void) { body }
int main (int argc, char *argv[]) { body } 

还有其他特定于平台的变体,但它们都必须返回 int

您似乎只看到了使用第一版main() 的程序。大多数实际应用程序使用main() 的第二个版本。它允许他们处理命令行参数。

【讨论】:

    【解决方案2】:

    您只在调用函数时传递参数,但这可能只是我们两人在术语上的不同。
    在定义函数时,我们定义了形式参数,包括它们的类型。
    如果您从未见过使用参数定义的main(),那么您从未见过可以处理命令行参数的main()

    可以处理它们的main() 的常用原型是

    int main(int argc, char **argv)
    

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

    有关如何使用此功能的示例,请参阅
    https://stackoverflow.com/a/47536091/7733418

    【讨论】:

      【解决方案3】:

      主要语法是

      int main(int argc, char **argv);

      其中,argc 是指传入的命令行参数的数量,其中包括用户调用的程序的实际名称。 argv 包含实际参数,从索引 1 开始。索引0 是程序名称。

      【讨论】:

      • 包括程序的实际名称” - 通常,但在某些极端情况下并不总是如此。所以argv[0] 是程序名称,只有当名称实际存在时。
      • @RemyLebeau 不总是一样?你能告诉我们一些例子吗?
      猜你喜欢
      • 2017-06-03
      • 1970-01-01
      • 2020-01-16
      • 2017-01-17
      • 1970-01-01
      • 2010-10-24
      • 1970-01-01
      • 2019-11-07
      相关资源
      最近更新 更多