Main():
处理命令行选项
int main(int argc,char *argv[])
是
c++
的里面的
main
()函数的一种扩展原型
其中
int argc
表示的是运行程序时命令行里所带参数的个数
+1 (
因为包括了该程序名
)
,如果不带参数的话那就默认是
1
char *argv[] 参数是字符数组的指针,也可以用 char **argv 表示 ,不过严格来讲是不一样的。
前者是指向字符指针的数组,后者是指向字符指针的指针。由于 c 里面没有真正的数组,是用指向一个数值的系列的指针来表达数组的,所以上面的两种表示差不多。不过 char ** 实际上有二义性,可能是一个 char* 的指针或 char * 的数组的指针。 所以 char* argv[] 就要明确一些。
char *argv[] 参数是字符数组的指针,也可以用 char **argv 表示 ,不过严格来讲是不一样的。
前者是指向字符指针的数组,后者是指向字符指针的指针。由于 c 里面没有真正的数组,是用指向一个数值的系列的指针来表达数组的,所以上面的两种表示差不多。不过 char ** 实际上有二义性,可能是一个 char* 的指针或 char * 的数组的指针。 所以 char* argv[] 就要明确一些。
argv[]
里面的内容就是参数的内容。如果不带参数的话那
argv[0]
就是程序的路径名
请看下面两个例子(两个都是一个意思,一个是
C
版,一个是
C++
版)
/C++
版
/
#include <iostream.h>
int main(int argc,char *argv[])
{
cout<<"argc= "<<argc<<endl;
for(int i=0;i<argc;i++)
{
cout<<"argv["<<i<<"]="<<argv[i]<<endl;
}
return 0;
}
cout<<"argc= "<<argc<<endl;
for(int i=0;i<argc;i++)
{
cout<<"argv["<<i<<"]="<<argv[i]<<endl;
}
return 0;
}
/C
版
/
#include <stdio.h>
main(int
argc,char *argv[])
{
int i;
printf("argc=%d/n",argc);
for( i=0;i<argc;i++)
printf("argv[%d]=%s/n",i,argv[i]);//
getch();
}
编译后程序的名字叫
Program.exe,
在
E
盘根目录下,运行时,显示的结果是如下图
E:/program
(回车)
Argc=1
Argv[0]=E:/PROGRAM.EXE
E:/program aa bb cc
(回车)
Argc=4
Argv[0]=E:/PROGRAM.EXE
Argv[1]=aa
Argv[2]=bb
Argv[3]=cc
至于
aa bb cc
这些参数是干什么的,那是在程序里自己定义的