main函数参数及可变参数列表

来源:互联网 发布:蓝牙连接软件 编辑:程序博客网 时间:2024/05/23 00:10

C语言中main函数是程序的入口函数,一般在使用main函数的时候都是不带参数的,那么main函数带上参数又如何呢?

  main函数形式:

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

可知main函数有三个参数:
1,argc:记录命令行参数的个数(包含第一个参数–可执行文件名),是一个整型变量;
2,argv:表示命令行的每一个参数的字符指针数组,每一个元素是一个字符指针,指向一个字符串;
3,envp:字符指针数组,每一个元素是指向一个环境变量的字符指针(最后一个元素是NULL)。

main函数不能再程序内部取得实际值,它的参数是从操作系统命令行上获取的,
命令行的一般形式为”C:>可执行文件名 参数 参数 参数”。

根据一个实例深入认识一下mian函数的参数:使用main函数的参数,实现一个整数计算器

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[]){    int ret = 0;    int ben = 0;    int tmp = 0;    if (argc != 4)    {        printf("输入的参数错误\n");        return 1;    }    ben = atoi(argv[2]);//atoi函数把字符串转化成一个整数值    tmp = atoi(argv[3]);    switch (*(argv[1] + 1))    {    case 'a':        ret = Add(ben, tmp);        break;    case 's':        ret = Sub(ben, tmp);        break;    case 'm':        ret = Mul(ben, tmp);        break;    case 'd':        ret = Div(ben, tmp);        break;    default :        break;    }}

这里写图片描述

argc等于4,argv[]有四个有效参数。

这里写图片描述

 可变参数列表
可变参数列表可以通过宏来实现,定义在stdarg.h头文件中。这个头文件中声明了一个类型va_list 和三个宏——va_start, va_arg, va_e。

使用可变参数,实现函数求未知参数部分n个数中的最大值

#include<stdio.h>#include<stdlib.h>#include <stdarg.h>int Max(int n, ...){    va_list arg;//声明arg变量,用于访问参数列表的未确定的部分    int i = 0;    int max = 0;    va_start(arg, n);//va_start初始化变量arg,把arg变量设置成指向可变参数列表的第一个参数    int m = va_arg(arg, int);//arg返回参数的值并指向下一个可变参数    for (i = 1; i < n; i++)    {        max = ((m)>(va_arg(arg, int)) ? (m) : (va_arg(arg, int)));    }    return max;    va_end(arg);}int main(){    int a = 9;    int b = 8;    int c = 6;    int arg = Max(3, a, b, c);    printf("%d\n", arg);}