C语言:浅谈main函数参数

大家可能对main函数已经再熟悉不过了。是程序的函数,最先执行的函数。然而,我们一般用到的都是无参数的main函数,大家是否知道其实main函数是有参数的呢?我们先来看看MSDN里面关于main函数的介绍:

这里写图片描述

这里写图片描述

大家可以看到,main函数是有参数的,分别是argc,argv和envp。那它们分别是什么意思呢?下面我就给大家一一解释一下:
argc:是一个整形变量,表示命令行的参数(包含第一个参数)。
argv:是一个字符指针的数组,每一个元素是一个字符指针,指向一个字符串,这些字符串就是命令行中的每一个参数。
envp:是一个字符指针的数组,数组的每一个元素是指向一个环境变量(字符串)的字符指针。

可能这样简单的阐述大家还是不太懂,那么下面我们用一段代码让大家具体体会下:

#include<stdio.h>
#include<stdlib.h>

/*main函数的三个参数依次是:命令行参数的个数(含第一个参数)、argv是个字符指针的数组,每个元素是一个字符指针,
                             指向一个字符串,这些字符串就是命令行中的每一个参数、envp是字符指针的数组,每
                             一个元素都指向一个环境变量*/
int main(int argc, char* argv[], char*envp)
{
    int i = 0;
    for (i = 0; i < argc; i++)
    {
        printf("%s\n", argv[i]);
    }
    system("pause");
    return 0;
}

这个代码的输出结果如下图:
这里写图片描述

我们可以给运行可执行程序text4.29.exe的时候加上其他的参数,比如”zhangsan “ “lisi”,怎么加入参数呢?右击程序所在项目,选择最后一项属性,进去之后找调试,然后找到命令行,向里面填写我们需要的命令行参数,如下图:
这里写图片描述

那么改了参数之后,我们看程序运行结果:
这里写图片描述

可以看到我们输入的参数已经被打印出来了。现在大家对main函数的三个参数有了一点点的认识了吧。概括的讲就是argc是命令行的参数个数,而argv数组里面的元素是具体的参数,而envp是环境变量的参数。

那么下面我们通过一个具体的例子再体会一下main函数三个参数的概念:使用main函数参数实现一个简单的计算器。它的要求是实现当参数列表里面输入-a 3 4时实现3+4,-s 3 4 时实现3-4,-m 3 4时实现3*4,-d 3 4时实现3/4。
那么我们在实现这个程序时,首先就要确定,它的参数个数即agrc应该是4个,然后argv数组里面存放的应该就是这四个参数。下面看具体的代码实现:

#include<stdio.h>
#include<stdlib.h>

int Add(int x, int y)
{
    return x + y;
}

int Sub(int x, int y)
{
    return x - y;
}

int Mul(int x, int y)
{
    return x * y;
}

int Div(int x, int y)
{
    return x / y;
}

int main(int argc, char* argv[], char* envp[])
{
    int x = 0;
    int y = 0;
    int ret = 0;
    if (argc!=4)//参数个数不为4
    {
        printf("请检查参数个数\n");
        return 0;
    }
    x = atoi(argv[2]);//atoi:字符串转化为整数函数
    y = atoi(argv[3]);

    switch (*(argv[1] + 1))
    {
    case 'a':
        ret = Add(x,y);
        break;
    case 's':
        ret = Sub(x,y);
        break;
    case 'm':
        ret = Mul(x,y);
        break;
    case 'd':
        ret = Div(x,y);
        break;
    default:
        printf("参数有误\n");
        break;
    }
    printf("ret = %d\n", ret);
    system("pause");
    return 0;
}

当参数命令输入-a 3 4时
这里写图片描述

运行结果如下图
这里写图片描述

猜你喜欢

转载自blog.csdn.net/windyj809/article/details/80154660