中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解可變參數列表

發布時間:2020-07-10 20:06:17 來源:網絡 閱讀:386 作者:寫代碼好累 欄目:編程語言

經過一段時間的C語言學習,開始對printf函數產生了好奇,它可以接受不確定數目的參數。我們來看一下他的函數原型:   

       int printf(const char*format,...)

這個其實就是可變參數,我們來看看它的源代碼:

       

int printf(const char*format,...)
       {
          int res;
          va_list(arg);
          va_start(arg,format);
          res=vprintf(format,arg);
          va_end(arg);
          return res;
        }

其實他只是簡單的調用vprintf而已。

我們用一個簡單的例子來理解一下。

求平均數函數的實現。

int average(int val,...)
{
int i=0;
int sum=0;
va_list arg;     //這個就是 char*的意思
va_start(arg,val);
for(i=0;i<val;i++)
{
  sum+=va_arg(arg,int);
}
va_end(arg);
return sum/val;
}

函數中,va_arg(arg,int)的作用就是拿到下一個參數的值。



從函數的實現可以看到,我們使用可變參數應該有以下步驟:
1)首先在函數里定義一個va_list型的變量,這里是arg,這個變
量是指向參數的指針.
2)然后用va_start宏初始化變量arg,這個宏的第二個參數是第
一個可變參數的前一個參數,是一個固定的參數.
3)然后用va_arg返回可變的參數,并賦值. va_arg的第二個
參數是你要返回的參數的類型,這里是int型.
4)最后用va_end宏結束可變參數的獲取.然后你就可以在函數里使
用第二個參數了.如果函數有多個可變參數的,依次調用va_arg獲
取各個參數.

向AI問一下細節
推薦閱讀:
  1. wsdl詳解
  2. mysql 詳解

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

杂多县| 陕西省| 岳普湖县| 沙洋县| 富裕县| 大庆市| 台南县| 保山市| 林口县| 利津县| 澎湖县| 全椒县| 天等县| 平山县| 扬中市| 五指山市| 铜陵市| 大荔县| 辽阳市| 偃师市| 新乐市| 静乐县| 平湖市| 罗源县| 嫩江县| 彭泽县| 平度市| 太康县| 邳州市| 扎赉特旗| 晋中市| 都安| 湘阴县| 潼南县| 尉氏县| 天祝| 东兰县| 亚东县| 拉孜县| 屏南县| 外汇|