printf是什么,對于起初學習c語言的同學來說肯定都特別的疑惑。在這里,解答一下:它是一個函數。既然是一個函數的話,想必肯定有返回值和參數吧。那么它的返回值和參數是什么呢?
1、看一下這個例子,可能更好理解點:
這個看起來只是個printf函數,但它卻在printf函數基礎上嵌套了好幾層printf,這樣下來結果是什么呢?
我們就知道,printf(buf, fmt, arg)函數可以傳多個參數,就像這里嵌套的printf函數一樣,而它的返回值為什么是4321呢。
43即是i的值,2是打印出的43這個值的字符的個數,1是上一層打印出的字符的個數。
這里還需要說明一點的是:函數的參數壓棧是從右往左壓的。即調用printf函數時也是最右邊的參數先壓棧。
2、格式化輸出
printf()函數是一個格式化輸出函數,可以打印出變量的指令。
比如我們經常遇到的%d,%c,%s等,可以通過符號轉換輸出相應的結果。
3、printf()函數的參數列表
形式:printf(const char *fmt, ...
)
int __cdecl printf(_In_z_ _Printf_format_string_ const char * _Format, ...);
當一個可變參數列表特別多或者不確定時,我們就可以用...替代它。
要處理變參函數,需要用到 va_list 類型,和 va_start(初始化參數指針),va_end,va_arg(獲得指向參數的值)宏定義。
這些參數都是定義在stdarg.h這個頭文件中.
用va_arg()從左到右逐個取參數值。