Head First C学习日志 第七章 创建可变参数的函数
2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
##讓函數(shù)能伸縮 為了讓函數(shù)可以接收可變個數(shù)/類型的參數(shù),在此引入 可變參數(shù)的函數(shù)
宏與函數(shù)
宏用來在編譯前重寫代碼,這里引入幾個宏va_start,va_list,va_arg和va_end,宏看起來和函數(shù)類似,實際上是一些指令。預(yù)處理器在編譯前,會根據(jù)這些指令插入代碼。以上幾個宏包含在頭文件stdarg.h中。
例程
#include <stdarg.h>double total(int args, ...) {double total = 0;va_list ap;va_start(ap, args);int i;for (i = 0; i < args; i++) {enum drink d = va_arg(ap, enum drink);total = total + price(d);}va_end(ap);return total; }...:省略號代表的是可以接收若干個參數(shù),參數(shù)的數(shù)量與args一致
va_list:將...處輸入的參數(shù)放在一個list中,具體的數(shù)據(jù)結(jié)構(gòu)不需要了解
va_start:C需要知道從哪里開始,需要告訴C最后一個普通參數(shù)的名字,在這個例子中是args
va_arg:將參數(shù)隊列中的元素,以特定的格式找出來,本例中是enum drink
va_end:告訴C你已經(jīng)讀取完成了所有的參數(shù)
要點
- 可變參數(shù)保存在va_list中
- 可以用va_start(),va_end(),va_art()來操作va_list
- 至少需要一個普通參數(shù)
- 讀取參數(shù)時,不能超過給出的參數(shù)個數(shù)
- 需要知道讀取參數(shù)的類型
#####代碼 stretchy variables function
轉(zhuǎn)載于:https://my.oschina.net/alextuan/blog/646351
總結(jié)
以上是生活随笔為你收集整理的Head First C学习日志 第七章 创建可变参数的函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java的MD5加密和解密
- 下一篇: swift2.2的新特性