C++ int main(int argc,字符**argv)

C++ int main(int argc,字符**argv),c++,arguments,main,C++,Arguments,Main,重复: 这个main函数中的参数是什么意思?他们想告诉我们什么 int main(int argc,char**argv) 更新:并且,前一行代码是否类似于此int main(int argc,char*argv[])?如果是这样,我们怎么能说char**argv与char*argv[]相似,因为它们从数组的角度看不相似 它与没有任何参数的int main()相比如何 谢谢。提供了一个很好的解释。第一个参数提供命令行参数的数量,第二个参数提供实际参数。argc提供参数的数量,argv提供这些参

重复:

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

int main(int argc,char**argv)

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

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


谢谢。

提供了一个很好的解释。第一个参数提供命令行参数的数量,第二个参数提供实际参数。

argc提供参数的数量,argv提供这些参数。第一个是用于运行程序的.exe的路径,以下是命令行中提供的.exe调用方的参数,如下所示:

my.exe arg1 arg2
鉴于

int main() {}

忽略参数。

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


这两个版本之间的区别仅仅在于您是否要解析命令行参数——如果您对它们不感兴趣,则可以使用第二种形式忽略它们。

argv是一个数组,其中包含传递给应用程序的命令行参数。argc告诉您该数组中包含的元素数。

它们表示命令行参数

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

因此:

foobarbaz

在命令行上,将有
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**argv
char*argv[]

做同样的事情


此外,虽然标准规定必须使用其中一个签名(您甚至不应该添加任何常量),但没有法律规定必须使用这两个变量名,但这是非常常规的,它们几乎是通用的。(也就是说,如果你愿意,你可以使用
argCount
argValues

我想你的意思是
argc=3
而不是
argc=2