亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

怎么在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

大渡口区| 关岭| 大冶市| 河东区| 庆安县| 景德镇市| 夏津县| 禄丰县| 扶沟县| 巴东县| 开封市| 宁河县| 昂仁县| 夏津县| 宝鸡市| 宾阳县| 北京市| 忻城县| 鹤庆县| 长海县| 佛坪县| 武川县| 泰兴市| 邛崃市| 区。| 铁力市| 大连市| 法库县| 天镇县| 土默特右旗| 湖北省| 桐乡市| 昔阳县| 顺义区| 宝鸡市| 德兴市| 望都县| 修文县| 绥棱县| 龙里县| 惠安县|