Head First C学习日志 第七章 创建可变参数的函数
生活随笔
收集整理的這篇文章主要介紹了
Head First C学习日志 第七章 创建可变参数的函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
##讓函數能伸縮 為了讓函數可以接收可變個數/類型的參數,在此引入 可變參數的函數
宏與函數
宏用來在編譯前重寫代碼,這里引入幾個宏va_start,va_list,va_arg和va_end,宏看起來和函數類似,實際上是一些指令。預處理器在編譯前,會根據這些指令插入代碼。以上幾個宏包含在頭文件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; }...:省略號代表的是可以接收若干個參數,參數的數量與args一致
va_list:將...處輸入的參數放在一個list中,具體的數據結構不需要了解
va_start:C需要知道從哪里開始,需要告訴C最后一個普通參數的名字,在這個例子中是args
va_arg:將參數隊列中的元素,以特定的格式找出來,本例中是enum drink
va_end:告訴C你已經讀取完成了所有的參數
要點
- 可變參數保存在va_list中
- 可以用va_start(),va_end(),va_art()來操作va_list
- 至少需要一個普通參數
- 讀取參數時,不能超過給出的參數個數
- 需要知道讀取參數的類型
#####代碼 stretchy variables function
轉載于:https://my.oschina.net/alextuan/blog/646351
總結
以上是生活随笔為你收集整理的Head First C学习日志 第七章 创建可变参数的函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java的MD5加密和解密
- 下一篇: swift2.2的新特性