查看: 1799|回复: 1

深度剖析c语言main函数---main函数的参数传递

[复制链接]

665

主题

1234

帖子

6670

积分

xdtech

Rank: 5Rank: 5

积分
6670
发表于 2021-6-10 17:09:47 | 显示全部楼层 |阅读模式
main函数传参
  首先说明的是,可能有些人认为main函数是不可传入参数的,但是实际上这是错误的。main函数可以从命令行获取参数,从而提高代码的复用性。

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

int main(int argc , char* argv[],char* envp[]);
1
参数说明:
  ①、第一个参数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("%s\n", envp[i]);
    }

    return 0;
}


回复

使用道具 举报

665

主题

1234

帖子

6670

积分

xdtech

Rank: 5Rank: 5

积分
6670
 楼主| 发表于 2021-6-10 17:09:53 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表