int main(int argc,char ** argv)

可能重复:
什么是正确的主要声明?

这个main函数中的参数意味着什么? 他们想告诉我们什么?

int main(int argc, char** argv)

更新:而且,前面的代码行类似于这个int main(int argc, char* argv[]) ? 如果是这样,我们怎么能说char** argv类似于char* argv[]因为它们与数组的角度看起来不相似?

它与int main()没有任何参数相比如何?

谢谢。


argc参数是在调用可执行文件时指定的命令行选项的数量,包括可执行文件的名称。 单个命令行选项位于argv数组中,该数组是NULL终止的(用于调用可执行文件的名称和路径位于argv[0] )。

这两个版本之间的区别仅仅在于你想解析命令行参数 - 如果你对它们不感兴趣,那么你可以使用第二种形式忽略它们。


维基百科提供了很好的解释。 第一个参数给出了命令行参数的数量,第二个参数给出了实际的参数。


它们代表命令行参数。

argc是命令行参数的数量,包括可执行文件的名称。 argv是一个以null结尾的字符串数组,其中argv[0]是命令行参数, argv[i]是此后的第i个参数, argv[argc-1]是最后一个参数, argv[argc]实际上是定义良好的空指针。

从而:

foo bar baz

在命令行上会有argc = 3, argv[0] =“foo” argv[1] =“bar” argv[2] =“baz” argv[3] = NULL

请注意,没有为“标志”参数放置特殊附件。

grep -i foo bar.cpp bar.h

会有4个参数(argc = 5,包括grep本身),-i就是其中之一,即使下一个参数是附加到该标志的“值”,这也是适用的。

请注意,如果你做了通配符

grep -i foo *

至少在UNIX中,*会在调用grep之前展开,因此每个匹配的文件都是参数。

顺便

char** argvchar* argv[]

做同样的事。

此外,虽然标准说你必须使用这些签名之一(你甚至不应该添加任何常量),但你不得不使用这两个变量名称的法则,但它是如此的传统,现在它们非常普遍。 (即你可以使用argCountargValues )。

链接地址: http://www.djcxy.com/p/28725.html

上一篇: int main(int argc, char** argv)

下一篇: int main() vs void main() in C