
这两个参数用于在运行程序时,从外部给程序传递参数,其中argc中保存了参数的个数,argv中分别保存了各个参数
例如一个程序的main()函数头部形如int main(int argc, char argv[]),编译链接后生成的可执行文件名为aexe,那么请注意下面的调用:
aexe abc def
在上面的命令行中,aexe是要运行的程序名称,后面的abc和def就是传入程序的两个参数,这两个参数就通过argc和argv传入程序,注意这些参数都是字符串。
通过上面的调用,在这个程序中,argc=3,aexe是第一个参数,这个字符串将保存在argv[0]中,abc和def分别是第二和第三个参数,它们分别被保存在argv[1]和argv[2]中
argc:外部命令参数的个数
argv[]:存放各参
在linux中的目录下执行 g++ cpp -std=c++11 -o MD5 得到可执行文件MD5
运行MD5文件,并携带程序选项进行测试 MD5 -h
命令行参数其实与普通参数类似,也就是一个函数的输入参数而已,不同的是,它是main函数的输入参数,并且格式一般固定如下:
int main(int argc, char argv[])
其中argc为整数,表示参数的个数;argv是一个字符串指针数组,用于接收输入的具体字符码。
需要说明的是,当不输入任何参数时,默认的参数个数argc为1,这个参数也就是argv[0],它保存的是程序名,如:c:\project\testexe
举个例子:
#include <stdioh>
int main(int argc, char argv[])
{
printf("argc=[%d]\nargv[0]=[%s]\n", argc, argv[0]);
return 0;
}
不加任何参数的输出为:
argc=[1]
argv[0]=[c:\project\testexe]
如果想输入参数,开始菜单-》运行-》输入cmd打开命令行,cd到程序所在目录,如:cd /d c:\project\
然后带参数执行,如:testexe sun shine
然后再打印argc,argv,可以看到argc等于3,argv[1]保存了sun,argv[2]保存了shine
自己尝试下,很esay ^_^
main(argc,argv)
int argc,char argv[];
{
}
从函数参数的形式上看,包含一个整型和一个指针数组。当一个C的源程序经过编译、链接后,会生成扩展名为EXE的可执行文件,这是可以在 *** 作系统下直接运行的文件,换句话说,就是由系统来启动运行的。对main()函数既然不能由其它函数调用和传递参数,就只能由
系统在启动运行时传递参数了。
在 *** 作系统环境下,一条完整的运行命令应包括两部分:命令与相应的参数。其格式为:
命令参数1参数2参数n¿
此格式也称为命令行。命令行中的命令就是可执行文件的文件名,其后所跟参数需用空格分隔,并为对命令的进一步补充,也即是传递给main()函数的参数。
命令行与main()函数的参数存在如下的关系:
设命令行为:program str1 str2 str3 str4 str5
其中program为文件名,也就是一个由programc经编译、链接后生成的可执行文件programexe,其后各跟5个参数。对main()函数来说,它的参数argc记录了命令行中命令与参数的个数,共6个,指针数组的大小由参数argc的值决定,即为charargv[6],指针数组的取值情况如图6-15所示。
数组的各指针分别指向一个字符串。应当引起注意的是接收到的指针数组的各指针是从命令行的开始接收的,首先接收到的是命令,其后才是参数。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)