在C/C++语言中main函数的参数如下所示:
(1)返回类型 main(int argc,char* argv[]) eg: int main(int argc,char* argv[])
(2)返回类型 main(int argc,char** argv) eg: int main(int argc,char** argv)
参数解释:
对于以上的(1)、(2)来说,argc表示的是命令行输入参数的个数;argv表示的是命令行输入的参数。
举例说明:
在Linux系统上,假如你写的程序是stat.c(此程序是为了获取到一个文件的大小),其中程序中使用的main函数如上面(1)所示,即就是下列程序:
int main(int argc, char* argv[])
{
if(argc<2)
{
printf("./a.out filename");
exit(1);
}
struct stat st;
int ret = lstat(argv[1], &st);
if(ret == -1)
{
perror("stat");
exit(1);
}
//获取文件的大小
int size =(int) st.st_size;
printf("file size = %d\n",size);
}
针对以上程序 ,重点关注红色部分(写代码不是重点,重点在于参数的介绍)
参数分析:
(1).写完代码后,对stat.c这个程序进行编译,使用的命令为: gcc stat.c -o stat
(2).编译完成之后会生成一个可执行文件stat,接下来执行此文件(首先应该在命令行下用 cd 命令进入到 stat 文件所在目录,在此目录下有其前准备的一个文件filename)
(3).然后使用 ./stat filename执行文件
(4).在(3)中,总共有两个参数,因此argc=2,第一个参数是./stat,即就是argv[0]=./stat;第二个参数是filename,即就是argv[1]=filename。如果在(3)中filename后面再多一个参数we,那么argc=3,argv[2]=we,以此类推。
总结:
简单来讲在main函数中的两个参数,就是在命令行输入的参数,argc表示在命令行输入的参数个数,argv表示在命令行输入的参数内容(中间用空格分开)
注意事项:
如果使用(返回类型 main(int argc,char* argv[]) eg: int main(int argc,char* argv[]))这种类型的main函数进行数据传输,在写代码的时候,需要进行参数类的判断。即就是:
int main(int argc, char* argv[])
{
if(argc<2)
{
printf("./a.out filename");
exit(1);
}
}
如上述代码中的红色部分所示。