天天看點

main函數參數及可變參數清單

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 = ;
    int ben = ;
    int tmp = ;
    if (argc != )
    {
        printf("輸入的參數錯誤\n");
        return ;
    }
    ben = atoi(argv[]);//atoi函數把字元串轉化成一個整數值
    tmp = atoi(argv[]);
    switch (*(argv[] + ))
    {
    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;
    }
}
           
main函數參數及可變參數清單

argc等于4,argv[]有四個有效參數。

main函數參數及可變參數清單

 可變參數清單

可變參數清單可以通過宏來實作,定義在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 = ;
    int max = ;
    va_start(arg, n);//va_start初始化變量arg,把arg變量設定成指向可變參數清單的第一個參數
    int m = va_arg(arg, int);//arg傳回參數的值并指向下一個可變參數
    for (i = ; i < n; i++)
    {
        max = ((m)>(va_arg(arg, int)) ? (m) : (va_arg(arg, int)));
    }
    return max;
    va_end(arg);
}
int main()
{
    int a = ;
    int b = ;
    int c = ;
    int arg = Max(, a, b, c);
    printf("%d\n", arg);

}
           

繼續閱讀