int main(int argc, char **argv)
{}
参数个数
argc
可能等于 0 吗?argv[0]
必须是可执行文件的名称吗?这些问题是否有标准规定?
int main(int argc, char **argv)
{}
参数个数 argc
可能等于 0 吗?
argv[0]
必须是可执行文件的名称吗?
这些问题是否有标准规定?
是的。
通常是的,也可能为空,或者是一些其他的标识字符串,甚至是NULL
(见我的补充说明)。还可以从程序内部更改argv[0]
为其他内容。
C(和C ++)规范。
你还错过了一个:在argv
中的最后一个元素始终为NULL
,这意味着argv [argc]
始终为NULL
。
在C11规范中,它在§5.1.2.2.1程序启动中。
在C++11规范中,它是§3.6.1主函数。
argv [0]
可能是一个指向空字符串的指针。话虽如此,这更多是理论上的陈述,不太实际。 - Jonathan Lefflerargc
在 C 和 C++ 中都允许为零;我忘记了这个细节。 - Jonathan Lefflerargc == 0
的可能性,但是标准(包括 C 和 C++)明确允许它。假设 argc > 0
,则 argv[0]
的值可能是空字符串而不是程序名称——但仅当在特定平台上无法确定程序名称时才会出现这种情况。在托管环境中,这很少是一个实际问题。 - Jonathan Leffler
main()
函数应该返回什么?。 - Jonathan Leffler