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

时间:2010-02-07 03:50:42

标签: c++

嗨我想知道argv [1]或argv [2]会是什么值,如果我没有提供命令行参数

3 个答案:

答案 0 :(得分:7)

你已经得到了大量错误答案。如果在命令行中没有输入任何内容,argv[0]通常仍会包含程序的名称,因此argc将为1. argv[argc]将包含空指针(始终在每个符合要求的实现上) C或C ++)。在C标准中,要求是§5.1.2.1.1/ 2的第二个要点。在C ++标准中,它是§3.6.1/ 2。

答案 1 :(得分:2)

这将是垃圾 NULL

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

有关详细信息,请参阅this

答案 2 :(得分:-1)

如果你运气不好,那就是一个段落错误,如果你不幸,那就是垃圾。

使用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];
}

杰瑞注意。在大多数体系结构上取消引用NULL时,会出现段错误。