int argc, char \*argv\[\] 是什么意思?

新手上路,请多包涵

在许多 C++ IDE 和编译器中,当它为您生成 main 函数时,它看起来像这样:

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

当我在没有 IDE 的情况下仅使用命令行编译器编写 C++ 代码时,我键入:

 int main()

没有任何参数。这是什么意思,对我的计划至关重要吗?

原文由 Greg Treleaven 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

argvargc 是在 C 和 C++ 中将命令行参数传递给 main() 的方式。

argc 将是 argv 指向的字符串数。这将(实际上)是 1 加上参数的数量,因为几乎所有的实现都会将程序的名称添加到数组中。

按照惯例,变量被命名为 argc ( _参数计数_)和 argv ( _参数向量_),但它们可以被赋予任何有效的标识符: int main(int num_args, char** arg_strings) 同样有效。

如果您不打算处理命令行参数,它们也可以完全省略,产生 int main()

试试下面的程序:

 #include <iostream>

int main(int argc, char** argv) {
    std::cout << "Have " << argc << " arguments:" << std::endl;
    for (int i = 0; i < argc; ++i) {
        std::cout << argv[i] << std::endl;
    }
}

./test a1 b2 c3 运行它会输出

Have 4 arguments:
./test
a1
b2
c3

原文由 user229044 发布,翻译遵循 CC BY-SA 3.0 许可协议

只是补充一下,因为有人说有第三个参数( *envp[] ),这是真的,有,但不是 POSIX 安全的,如果你希望你的程序使用环境变量,你应该使用 extern char 环境 ;D

原文由 izenynn 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏