C语言中的int main(int argc,char* argv[]的含义和用法
1、基本概念
argc,argv 用命令行编译程序时有用。
主函数main中变量(int argc,char *argv[ ])的含义,有些编译器允许将main()的返回类型声明为void,这已不再是合法的C++
main(int argc, char *argv[ ], char **env) 才是UNIX和Linux中的标准写法。
argc: 整数,用来统计你运行程序时送给main函数的命令行参数的个数
- argv[ ]: 指针数组,用来存放指向你的字符串参数的指针,每一个元素指向一个参数
argv[0] 指向程序运行的全路径名
argv[1] 指向在DOS命令行中执行程序名后的第一个字符串
argv[2] 指向执行程序名后的第二个字符串
…
argv[argc]为NULL。
env:字符串数组。env[ ]的每一个元素都包含ENVVAR=value形式的字符串。其中ENVVAR为环境变量,value 为ENVVAR的对应值。
argc, argv,env是在main( )函数之前被赋值的,编译器生成的可执行文件,main( )不是真正的入口点,而是一个标准的函数,这个函数名与具体的操作系统有关。
2、具体用法
经典例子
对于理解argv[ ]函数很管用:
#include<stdio.h>int main(int argc,char *argv[]){ int i; if(argc==1) printf("only get the program!\n"); if(argc>2) for(i=1;i<argc;i++) printf("inputfile[%d]:%s\n",i+1,argv[i]); return 0;}编译运行结果如下:
ubuntu@ubuntu:~/DATA/others$ gcc xx.c -o lglubuntu@ubuntu:~/DATA/others$ ./lglonly get the program!ubuntu@ubuntu:~/DATA/others$ ./lgl xx 123 zls2inputfile[2]:xxinputfile[3]:123inputfile[4]:zls2ubuntu@ubuntu:~/DATA/others$main(int argc, char* argv[ ]),其中argc是指变量的个数,本例中即指test和hello这两个变量和程序运行的全路径名或程序的名字,argc即为3。
argv是一个char *的数组,其中存放指向参数变量的指针,此处argv[0]指向test.exe的全路径名或test.exe,argv[1]指向test,argv[2]指向hello。
3、实例
#include <stdio.h>
int main(int argc, char *argv[]){ printf("%d\n",argc); printf("\n"); printf("%s\n",argv[0]); printf("%s\n",argv[1]); printf("%s\n",argv[2]); return 0;}编译运行
$ ./test_main.o wan tu sirui$ ./test_main.owanTuReference
【1】int main(int argc,char* argv[]) 的含义和用法 - hxing - 博客园 (cnblogs.com)
【2】https://blog.csdn.net/qq_37212828/article/details/103153208