C/C++ 中的默认 int 主要参数 [重复]

Posted

技术标签:

【中文标题】C/C++ 中的默认 int 主要参数 [重复]【英文标题】:Default int main arguments in C/C++ [duplicate] 【发布时间】:2013-06-07 09:13:42 【问题描述】:

我在 C/C++ 中搞乱项目,我注意到了这一点:

C++

#include <iostream.h>

int main (int argc, const char * argv[]) 
    // insert code here...
    cout << "Hello, World!\n";
    return 0;

C

#include <stdio.h>

int main (int argc, const char * argv[]) 
    // insert code here...
    printf("Hello, World!\n");
    return 0;

所以我一直想知道,这些默认参数在 C/C++ 中的 int main 下到底有什么作用?我知道应用程序在没有它们的情况下仍然可以编译,但它们的用途是什么?

【问题讨论】:

argc:参数计数; argv:参数向量。它们是程序的命令行参数。不是 C 语言中的 char** argv 吗? 它们提供对提供给程序的命令行参数的访问。 参见例如***.com/questions/3024197/… @mwerschy:char*[]char** 都有效。 @Kirilenko 啊好的 :) 不知道 C 允许这样做。 【参考方案1】:

它们保存在命令行上传递给程序的参数。例如,如果我有程序 a.out 并因此调用它:

$ ./a.out arg1 arg2 

argv 的内容将是一个包含字符串的数组

    [0] "a.out" - 可执行文件的文件名始终是第一个元素 [1] "arg1" - 其他参数 [2] "arg2" - 我通过了

argc 保存argv 中的元素数量(如在 C 中,当传递给函数时,您需要另一个变量来知道数组中有多少元素)。

你可以用这个简单的程序自己尝试一下:


C++

#include <iostream>

int main(int argc, char * argv[])
    int i;
    for(i = 0; i < argc; i++)
        std::cout << "Argument "<< i << " = " << argv[i] << std::endl;
    
    return 0;


C

#include <stdio.h>

int main(int argc, char ** argv)
    int i;
    for(i = 0; i < argc; i++)
        printf("Argument %i = %s\n", i, argv[i]);
    
    return 0;

【讨论】:

我认为 argv ahs 是 argv[]....作为一个数组 char ** argv 也是允许的,因为数组可能会衰减为 C 中的指针。我相信char * argv[] 确实是首选,但我已经习惯了,它为我节省了 1 个字符并且稍微有点打字速度更快。【参考方案2】:

如果你想通过命令行接受参数,那么你需要在主函数中使用参数。argc是参数计数和字符指针数组列出参数。 参考这个链接http://www.cprogramming.com/tutorial/c/lesson14.html

【讨论】:

【参考方案3】:

这些用于命令行参数。 argc 是参数的数量,参数存储为以空字符结尾的字符串数组 (argv)。通常,没有传入命令行参数的程序仍然会在argv 中存储一个;即,用于执行程序的名称(它不会一直存在,取决于程序的执行方式,但我不记得具体是什么情况了)。

【讨论】:

【参考方案4】:

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

argc 将是 argv 指向的字符串的数量,这通常比您从终端传递的参数数量多一个,因为通常第一个是程序的名称。

【讨论】:

以上是关于C/C++ 中的默认 int 主要参数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

参数中的数据值被复制到其他参数 c++, c#

python函数——形参中的:位置参数,关键字参数,默认参数,*args 和 **kwargs的关系

python中的参数

函数调用的结果可以用作默认参数值吗?

JavaScript 函数中的默认参数值 [重复]

未提供值时命令行参数的默认值[重复]