【发布时间】:2014-03-24 23:26:35
【问题描述】:
如果我在 Visual Studio 2013 下编译这段代码
int main(int argc, char* argv[])
{
std::cout << "arg count: "<< argc << "/n";
}
然后在没有附加参数的情况下运行它(即>program.exe),它会输出
arg count: 1
输出 1 个参数 (>program.exe arg1)
arg count: 2
但这就是奇怪的地方。如果我输入 (>program.exe arg1 arg2) 它输出
arg count: 2
“arg count”应该是3,不是吗?
使用 (>program.exe arg1 arg2 arg3) 输出
arg count: 2
在这种情况下应该是 4...
打印 argv[3] 出于某种原因可以正常工作。
为什么会这样?
【问题讨论】:
-
当您摆脱打印
argv[3]的尝试时会发生什么?这会在您的程序中引入未定义的行为。 -
你能说明你是如何提供这些论点的吗?具体来说,你是如何调用程序的?
-
argv的最后一个指针通常初始化为NULL,这样就可以在没有索引的情况下迭代参数。 -
请注意,此处使用的标准 C/C++ 类型是 'char' 而不是 'CHAR'。
-
@tomatopipps 此代码应该可以正常工作。要么你自己搞砸了论点,要么你的构建被破坏了。您是否尝试过重新启动计算机? ;-)