剖析printf函數

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()從左到右逐個取參數值。



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/382844.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382844.shtml
英文地址,請注明出處:http://en.pswp.cn/news/382844.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大端小端詳解

文章目錄為什么有大端小端?大端:低位放在高地址,高位放在低地址小端:低位放在低地址,高位放在高地址面試考點:代碼代碼2一道面試題為什么有大端小端? 大端:低位放在高地址&#xff0…

xpath 簡單小記

1 定位沒有class屬性的td元素 tds tr.xpath(.//td[not(class)])

詳解volatile關鍵字

volatile字面意思&#xff1a;易變的。在計算機里&#xff0c;是防止優化的意思&#xff0c;然而是怎么防止優化的呢&#xff1f;待我一一道來哦。 先看這樣一個例子&#xff1a; <span style"font-size:18px;">#include<iostream> using namespace std…

C語言 有符號字符型輸出 面試題

1.第一題 int main() {int a 128;printf("%u\n", a);system("pause"); } 輸出結果 128 #include <stdio.h> #include <stdlib.h>int main() {char a 128;printf("%u\n", a);system("pause"); } 輸出結果 42949671…

正則表達式提取括號里面的值

轉自 https://blog.csdn.net/jiahaowanhao/article/details/80795148

有趣的鏈表相關題型

鏈表&#xff1a;也是線性表的一種。形象的來說&#xff1a; 就像火車的一個個車廂一樣&#xff0c;一個個的鏈起來的。它有一個特點&#xff1a;它的頭沒有前驅&#xff0c;尾沒有后繼。 為什么會引入鏈表這個概念呢&#xff1f;之前我們知道的順序表&#xff0c;是用數組的形…

簡陋版C語言仿真通訊錄

文件cotact.c #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include "contact.h" /*初始化*/ void InitContact(pContact pc) {pc->count 0;memset(pc->data, 0, sizeof(pc->data)); }/*增加數據*/ void AddCon…

pip3 便捷安裝包

將虛擬環境下 的包列舉出來 并保存到文件夾 pip3 freeze > requirments.txt 一次性安裝文件里面所列舉的所有的包 pip3 install -r requirments.txt

有趣的約瑟夫環問題

大家有沒有聽過約瑟夫環這個問題呢&#xff1f;我們先來看看它是一個什么樣的問題~ 約瑟夫環&#xff08;Josephus&#xff09;問題是由古羅馬的史學家約瑟夫&#xff08;Flavius Josephus&#xff09;提出的。該問題的說法不一&#xff0c;傳說他參加并記錄了公元66—70年猶太…

C語言模擬實現標準庫函數之qsort() 2

C語言模擬實現標準庫函數之qsort() <1> https://blog.csdn.net/csdn_kou/article/details/80158194 排序數字 int int_cmp(const void *elem1, const void *elem2) { return *(int *)elem1 - *(int *)elem2; }int main() { int arr[] { 9,8,7,6,5,4,3,2,1 }; int siz…

node.js windows下安裝與配置

轉自 https://www.cnblogs.com/liuqiyun/p/8133904.html

一系列鏈表題

1、鏈表的倒序輸出&#xff1a;(輸出4&#xff0c;3&#xff0c;2&#xff0c;1)在這里&#xff0c;可以使用遞歸的方式&#xff1a; <span style"font-size:18px;">void Reverse(pNode pHead) {if(pHead){Reverse(pHead->next);cout<<pHead->data…

簡陋版C語言仿真通訊錄之動態內存開辟版本

簡陋版C語言仿真通訊錄 https://blog.csdn.net/csdn_kou/article/details/80287640 簡陋版C語言仿真通訊錄之動態內存開辟版本 給Contact結構體增加一個容量&#xff0c;來表示什么時候增容 #define MAX_NAME 20 typedef struct PeoInfo {char name[MAX_NAME];int age;char …

node.js 代碼修改 自動識別重啟工具

npm install supervisor -g supervisor xx.js 代替 node xx.js 能實現自動重啟服務&#xff0c;識別代碼更新

C語言轉移表之加減乘除無限進化版

主干程序初級版本進階版本版本進化 主干程序 輸入程序解析程序 /*解析字符串 有空格把空格分開 比如輸入&#xff1a;add 1 2 解析后&#xff1a;add12*/ void do_parse(char *buf) {int state 0;int i 0;int argc 0;char *argv[8] {0};for (i 0; buf[i]; i){if (state …

node.js 筆記1 模塊方面

url 模塊 parse 解析url 可以用來獲取查詢參數 xx.js exports.xx xx 另一個文件引用 require(’./xx.js); 獲取的句柄 相當于 xx.js 中的 exports xx.js module.exports xx 這樣被人引用 相當于就是直接拿到了 xx 當require xx 的時候&#xff0c; 如果xx不在當前文件夾 &…

c++之指針引用

指針&#xff1a;指向一塊內存地址的標識。 引用&#xff1a;給已經定義的變量起的別名。 格式&#xff1a; 類型 &引用變量名 已定義的變量名&#xff08;引用變量名和已定義的變量名可以看成是同一個實體&#xff0c;一個改變&#xff0c;另一個也隨之改變&#xff0…

C語言之scanf中的格式

scanf函數原型控制格式1.%[^\n]%*c例子1例子2 1.%[]例子1例子2 scanf函數原型 int scanf( const char *format, ... ); 見可變參數求和 https://blog.csdn.net/csdn_kou/article/details/79996606 控制格式 %c 一個單一的字符 %d 一個十進制整數 %i 一個整數 %e, %f, %…

node.js 將文件目錄讀取 通過匿名函數自執行 將異步改為同步

var fs require(fs);var filesarray []; fs.readdir(html, function(error, files){if(error){console.log(error.stack);console.log(--------);console.log(文件夾讀取失敗);return false;}// 匿名函數自執行&#xff0c; 將異步改為同步(function getFile(i){console.log(…

蛇形數組打印(兩種形式)

#蛇形數組打印 ##第一種形式 形式1 51 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9 請按任意鍵繼續. . .形式2 513 14 15 16 112 23 24 17 211 22 25 18 310 21 20 19…