首页 > 编程知识 正文

给main函数传递参数,c语言的main函数有参数吗

时间:2023-05-05 06:35:04 阅读:192847 作者:3077

  在上文中,我们主要讲了c语言main函数的返回值问题,本文主要将main函数的参数传递。

main函数传参

  首先说明的是,可能有些人认为main函数是不可传入参数的,但是实际上这是错误的。main函数可以从命令行获取参数,从而提高代码的复用性。

函数原形

  为main函数传参时,可选的main函数原形为:

int main(int argc , char* argv[],char* envp[]);

参数说明:
  ①、第一个参数argc表示的是传入参数的个数
  ②、第二个参数char* argv[],是字符串数组,用来存放指向的字符串参数的指针数组,每一个元素指向一个参数。各成员含义如下:
  argv[0]:指向程序运行的全路径名
  argv[1]:指向执行程序名后的第一个字符串 ,表示真正传入的第一个参数
   argv[2]:指向执行程序名后的第二个字符串 ,表示传入的第二个参数
   ……
   argv[n]:指向执行程序名后的第n个字符串 ,表示传入的第n个参数
  
 规定:argv[argc]为NULL ,表示参数的结尾。
 
③、第三个参数char* envp[],也是一个字符串数组,主要是保存这用户环境中的变量字符串,以NULL结束。envp[]的每一个元素都包含ENVVAR=value形式的字符串,其中ENVVAR为环境变量,value为其对应的值。envp一旦传入,它就只是单纯的字符串数组而已,不会随着程序动态设置发生改变。可以使用putenv函数实时修改环境变量,也能使用getenv实时查看环境变量,但是envp本身不会发生改变;平时使用到的比较少。

注意:main函数的参数char* argv[]和char* envp[]表示的是字符串数组,书写形式不止char* argv[]这一种,相应的argv[][]和
char** argv均可。

char* envp[]

  写个小测试程序,测试main函数的第三个参数:
  

#include <stdio.h>int main(int argc ,char* argv[] ,char* envp[]){ int i = 0; while(envp[i++]) { printf("%sn", envp[i]); } return 0;}

运行结果:部分截图

  envp[] 获得的信息等同于Linux下env命令的结果;

常用版本

  在使用main函数的带参版本的时,最常用的就是:int main(int argc , char* argv[]);变量名称argc和argv是常规的名称,当然也可以换成其他名称。命令行执行的形式为:可执行文件名 参数1 参数2 … … 参数n。可执行文件名称和参数、参数之间均使用空格隔开。

示例程序 #include <stdio.h>int main(int argc, char* argv[]){ int i; printf("Total %d argumentsn",argc); for(i = 0; i < argc; i++) { printf("nArgument argv[%d] = %s n",i, argv[i]); } return 0;}

运行结果:

➜ cpp_workspace git:(master) ✗ vim testmain.c ➜ cpp_workspace git:(master) ✗ gcc testmain.c ➜ cpp_workspace git:(master) ✗ ./a.out 1 2 3 #./a.out为程序名 1为第一个参数 , 2 为第二个参数, 3 为第三个参数Total 4 argumentsArgument argv[0] = ./a.out Argument argv[1] = 1 Argument argv[2] = 2 Argument argv[3] = 3 Argument argv[4] = (null) #默认argv[argc]为null

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。