(C語言)可變參數列表

來源:互聯網
上載者:User

標籤:c語言   可變參數列表   函數的調用   if   

C函數要在程式中用到以下這些宏:

void va_start( va_list arg_ptr, prev_param );
type va_arg( va_list arg_ptr, type );
void va_end( va_list arg_ptr );

 

va_list:用來儲存宏va_start、va_arg和va_end所需資訊的一種類型。為了訪問變長參數列表中的參數,必須聲明
             va_list類型的一個對象       定義: typedef char *  va_list;
va_start:訪問變長參數列表中的參數之前使用的宏,它初始化用va_list聲明的對象,初始化結果供宏va_arg和
               va_end使用;
va_arg: 展開成一個運算式的宏,該運算式具有變長參數列表中下一個參數的值和類型。每次調用va_arg都會修改
              用va_list聲明的對象,從而使該對象指向參數列表中的下一個參數;
va_end:該宏使程式能夠從變長參數列表用宏va_start引用的函數中正常返回。
va在這裡是variable-argument(可變參數)的意思.
這些宏定義在stdarg.h中,所以用到可變參數的程式應該包含這個標頭檔.下面我們寫一個簡單的可變參數的函數,改函數至少有一個整數參數,第二個參數也是整數,是可選的.函數只是列印這兩個參數的值.


問題描述:

       運用可變參數列表的方式求n個整形數中的最大值,並且輸出。


代碼如下:


/********可變參數列表*********/#include<stdio.h>#include<stdarg.h>    /* ANSI標準形式的聲明方式,括弧內的省略符號表示選擇性參數 */int Max(int n,...)/*求n個數的最大值*/ {va_list arg;/* 定義儲存函數參數的結構 */ int max=0;int i;va_start(arg,n);  /* argp指向傳入的第一個選擇性參數,msg是最後一個確定的參數 */for(i = 0;i<n;i++){   int tmp = va_arg(arg,int);  /* 取出當前的參數,類型為int類型 */ if(tmp>max){max = tmp;}}va_end(arg); /*結束可變參數的擷取*/return max;}int main(){int ret = Max(10,1,2,3,4,5,6,7,8,9,10);printf("%d\n",ret);return 0;}


(C語言)可變參數列表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.