Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 未从命令行输入内容时的Argv值_C++ - Fatal编程技术网

C++ 未从命令行输入内容时的Argv值

C++ 未从命令行输入内容时的Argv值,c++,C++,您好,我想知道argv[1]或argv[2]是什么值,如果我没有为它提供命令行参数,它将是垃圾NULL 因此,在尝试访问命令行参数之前,应始终首先测试argc(参数计数) 有关更多详细信息,请参阅。幸运的话是一个错误,不幸运的话是垃圾 使用argv的唯一安全方法是将其视为argc元素数组 for (int ii = 0; ii < argc; ++ii) { // safe to use argv[ii]; cout << argv[ii]; } int ix

您好,我想知道argv[1]或argv[2]是什么值,如果我没有为它提供命令行参数,它将是垃圾
NULL

因此,在尝试访问命令行参数之前,应始终首先测试
argc
(参数计数)


有关更多详细信息,请参阅。

幸运的话是一个错误,不幸运的话是垃圾

使用argv的唯一安全方法是将其视为argc元素数组

for (int ii = 0; ii < argc; ++ii)
{
    // safe to use argv[ii];
    cout << argv[ii];
}

int ix = somevalue;
if (ix >= 0 && ix < argc)
{
    // safe to use argv[ix];
}
for(int ii=0;ii

Jerry注意。在大多数体系结构上取消引用NULL时,您会得到一个segfault。

您已经得到了大量错误答案。如果命令行中没有输入任何内容,
argv[0]
通常仍然包含程序名,因此
argc
将为1。
argv[argc]将包含一个空指针(总是在C或C++的每一个一致的实现上)。在C标准中,要求是在第5.1.2.1.1,2的第二个符号中。在C++标准中,它是在3.3.1/2。< /P>这个答案稍微错误,如<代码> ARGV(1)。
将不包含垃圾,它将包含
NULL
。更正确的说法是“
argv[argc]
NULL
argv[1]
NULL
如果
argc
为1(如果在“托管环境”中没有向程序传递任何参数,则几乎总是这样,但不保证)当然,
argv[2]
(OP询问的)在这种情况下是未定义的。这是一个很好的细节。但其他答案并不是“不正确”。如果取消引用argv[1],您将得到垃圾或segfault,那么该值应该为null的事实有点离题。说arg[1]同样正确“contains”垃圾比argv[0]“contains”程序名要多。