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
。