91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

怎么在c語言中利用stdarg.h實現一個可變參數函數

發布時間:2021-01-13 15:07:17 來源:億速云 閱讀:301 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關怎么在c語言中利用stdarg.h實現一個可變參數函數,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

頭文件

這個用法需要引用一些宏,這些宏定義在C標準庫“stdarg.h”中,(當然C++中就是“cstdarg”了)。

函數聲明

int fun(int arg1,int arg2, ...){
//foo
}


這里可以用普通傳參方法傳入幾個固定參數,一般情況下會有個表示可變參數的個數(否則函數也不曉得你到底傳給了他啥),最后表示可變參數部分的是三個連續的點,注意中間不能有空格。我們傳入的可變參數就是在這里的。

具體用法

這里主要涉及到va_list類型,va_start()、va_arg()、va_end()這幾個函數。

va_list 可以理解為以鏈表的形式保存那些可變參數的一個數據類型(既然是鏈表,當然是可變的了)。

void va_start(va_list ap , int len); 接受兩個參數,一個是上面的那個東西,還有一個表示數據的數目。目測可以理解為是自動收集傳給本函數的可變參數,并連帶他的數目,將信息賦給 va_list 。

type va_arg(va_list ap , type ); 接受兩個參數,一個是va_list,另一個是保存的數據的類型。因為在調用參數的時候,編譯器不會檢查實際輸入的是什么參數,所以需要適時的指定,并以那個類型返回。注意,這時候在va_list中的某個指針會指向下一個元素,所以下一次調用時輸出的值就是下一個元素。在這一點上用法類似于iterator。

void va_end(va_list ap);最后清理這個va_list.

演示源碼

#include<stdarg.h>
#include<stdio.h>
void print(intarg,...){
 va_list ap;
 va_start(ap, arg);
 for (int i = 0; i < arg; i++){
 printf("%d ", va_arg(ap,int));
 }
 va_end(ap);
}
int main(){
 print(4, 1, 2, 3, 4);
}

結果自然是輸出 1 2 3 4。

關于怎么在c語言中利用stdarg.h實現一個可變參數函數就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

大英县| 化州市| 丰城市| 湖州市| 茌平县| 南丰县| 永顺县| 阜新市| 平陆县| 平罗县| 洛扎县| 泾阳县| 郑州市| 东丽区| 武定县| 象山县| 社会| 寻甸| 邓州市| 曲麻莱县| 庆云县| 陵川县| 靖西县| 清徐县| 东安县| 锦屏县| 姚安县| 自贡市| 营山县| 雷州市| 南康市| 磐安县| 棋牌| 武邑县| 朔州市| 且末县| 皮山县| 双牌县| 铁岭市| 佛学| 修水县|