502 字
3 分钟
C语言中的int main(int argc,char argv[]的含义和用法

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[ ]函数很管用:

xx.c
#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;
}

  编译运行结果如下:

Terminal window
ubuntu@ubuntu:~/DATA/others$ gcc xx.c -o lgl
ubuntu@ubuntu:~/DATA/others$ ./lgl
only get the program!
ubuntu@ubuntu:~/DATA/others$ ./lgl xx 123 zls2
inputfile[2]:xx
inputfile[3]:123
inputfile[4]:zls2
ubuntu@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、实例#

test_main.c
#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;
}

编译运行

Terminal window
$ ./test_main.o wan tu sirui
$ ./test_main.o
wan
Tu

Reference#

【1】int main(int argc,char* argv[]) 的含义和用法 - hxing - 博客园 (cnblogs.com)

【2】https://blog.csdn.net/qq_37212828/article/details/103153208

C语言中的int main(int argc,char argv[]的含义和用法
https://tuoyuangui.github.io/website/posts/typora/gnu语言/argc和argv的作用/
作者
椭圆规/tuoyuangui
发布于
2023-09-12
许可协议
CC BY-NC-SA 4.0