main()函数参数

很多人学了很长时间的C语言,可能还不知道mian()函数也是有参数的,甚至会说,main()函数哪来的参数,我从来都没见到过,更没有使用过,然而,不得不说,main()函数确实是有参数的。

main函数的参数:
main(int argc , char *argv [] , char *envp)
1、int argc: argv数组中元素的个数(不包括NULL)
2、char *argv[]:指针数组:数组里面放的是指针,保存每个字符串(把传递的每一个参数(第一个参数是固定的:可执行程序的相对路径,其余的是用户输入的)都看做是一个字符串)的首地址,最后还有一个空指针(NULL)。
3、char *envp[]:指针数组:包含两个参数 —->> 系统环境变量的地址和一个空指针(NULL)

给出一个程序来具体说明main()函数的参数:

程序功能:
1.使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“ -a”选项执行加法,“ -s”选项执行减法,“ -m”选项执行乘法,“ -d”选项执行除法,后面两个参数为操作数。
例如:输入test.exe -a 1 2
执行1 + 2输出3

#include<stdio.h>

int main(int argc, char *argv[], char *envp[]) //主函数的参数
                                               //主函数接收的参数都放在第二个参数:指针数组中,保留了其首元素地址
{
    if (argc < 4)                  //当argc < 4时,就不能传3个以上的参数,程序就不能正确执行
    {
                printf("arguments error: The number of arguments is too little!\n");
        system("pause");
        return 0;
    }
    if (*(argv[1]) == '-')       //先判断第一个参数的第一个字符是否满足条件
    {
        //int num1 = 0;
        //int num2 = 0;
        switch (*(++argv[1]))   //接着判断第一个参数的第二个字符是什么,注意这儿是前置++,不是后置++
        {
        case 'a':
            //while (*(argv[2]))     //麻烦的方法取第二个参数和第三个参数的值
            //{
            //  num1 = num1 * 10 + (*(argv[2]++) - 48);
            //}
            //while (*(argv[3]))
            //{
            //  num2 = num2 * 10 + (*(argv[3]++) - 48);
            //}
            //printf("%d\n", num1 + num2);
            printf("%d\n", atoi(argv[2]) + atoi(argv[3]));  //atoi函数 -->> 是把字符串转换成整型数的一个函数
            break;
        case 's':
            printf("%d\n", atoi(argv[2]) - atoi(argv[3]));
            break;
        case 'm':
            printf("%d\n", atoi(argv[2]) * atoi(argv[3]));
            break;
        case 'd':
            printf("%d\n", atoi(argv[2]) / atoi(argv[3]));
            break;
        default:
            printf("参数输入错误\n");
            break;
        }
    }
    else
        ;
    system("pause");
    return 0;
}

运行程序:

报错:
这里写图片描述
因为此时并没有为程序传递需要的参数,給程序传参的方式有两种。

1、在dos环境下运行程序并传递相应的参数

这里写图片描述

2、在所用的编译器上传参并运行程序

我用的是VS2013,在此编译器下传参并运行的方法是:
依次点击:视图 –> 解决方案资源管理器,现在就能看到你建的项目了,然后右键项目名,依次点击:属性 –> 通配属性 –> 调试 ,在命令参数里输入想要传递的参数(第一个参数:程序路径不需要输入,编译器会自己给出),此时就能正确运行程序了。

这里写图片描述

这里写图片描述

感兴趣的可以自己研究!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值