即是第一个表示参数的个数;第二个参数中argv[0]为自身运行目录路径和程序名,argv[1]指向第一个参数、argv[2]指向第二个参数、等等。
当你在CMD 命令行输入带参数的命令: XXX.exe /a /b
后面的/a /b等等内容,就是main函数用来接收的参数,你就可以自己根据参数的不同,来运行不同的代码了.
#include "iostream"
using namespace std;
int main(int argc,char **argv)
{
cout<<argc<<endl<<argv[argc-1]<<endl;
return 0;
}
运行下知道argv[0]是exe的目录具体位置.
这两个参数用于在运行程序时,从外部给程序传递参数,其中argc中保存了参数的个数,argv中分别保存了各个参数.
例如一个程序中main()形如int main(int argc, char *argv[]),编译链接后生成的可执行文件名为a.exe,那么在命令行调用时如:
a.exe -abc -def
在上面的命令行中,a.exe是要运行的程序名,后面的abc和def就是传入程序的两个参数,这两个参数就通过argc和argv传入程序,注意这些参数都是字符串.通过上面的调用,程序中,argc=3,a.exe是第一个参数,这个字符串将保存在argv[0]中,abc和def分别是第二和第三个参数,它们分别被保存在argv[1]和argv[2]中.
不合法的main函数命令行参数表示形式是
A) main(int a,char *c[]) B) main(int arc,char **arv)
C) main(int argc,char *argv) D) main(int argv,char *argc[])
答案是C,
main的第2个参数应该为一个字符数组指针,B的第二个参数是一个指向字符的指针的指针,也就是一个字符串数组;
C的第二个参数是一个指向字符的指针,也就是一个字符串.
char **argv或者char *argv[]是个二维数组,也可以理解为一个存放字符指针的数组---字符指针数组。每个元素存放一个字符指针,而字符指针又是可以指向一个字符串的,这n个字符串分别由argv[0]~~~argv[n]来指向.
这个就是指针数组,不是别的,特别不是二维数组