色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

簡單學習一下可變參數函數

玩轉單片機 ? 來源:玩轉單片機 ? 作者:noah ? 2022-11-29 09:29 ? 次閱讀

最近寫一個項目用到一些自編框架,遇到函數輸入參數不確定的問題,然后就在想有什么辦法實現,下班后靈光閃現想到C語言的某個語法(本人時不時都會看一些博客文章,在需要的時候就會想在哪里見過某些東西),然后就憑記憶嘗試輸入搜索,最后找到了它--可變參數函數,參數數量可變的函數被稱為可變參數函數(variable function)。

在框架的編寫中,都會考慮很多東西,對于不確定的輸入,使用可變參數函數也是個不錯的解決方案,下面就來簡單學習一下。

#include "stdio.h"
// 引入頭文件
#include "stdarg.h"


// 可變參數函數, 第一個變量指定后邊有多少個參數
void user_task_1(int NumofPara, ...)
{
  //用于for循環
  int i = 0;
  //用于打印變量
  int temp = 0;            


  //新建一個va_list類型的指針
  va_list pointer;


  //初始化指針,指針指向確定
  va_start(pointer, NumofPara);
  
  for( i = 0; i < NumofPara; i++ )
  {
    //用va_arg返回后續的可變參數, 類型是 int
    temp = va_arg(pointer, int);
    printf("item: %d
", temp);
    //同時,每次va_arg函數結束后,va_list指針指向下一位
  }
  //終結指針,釋放內存
  va_end(pointer);
}


int main()
{
  user_task_1(3, 2, 3, 4);
}

更秀一點的操作可以配合回調函數使用,靈活調用需要觸發的任務:

#include "stdio.h"
// 引入頭文件
#include "stdarg.h"


void user_task(void (*task)(void), int NumofPara, ...)
{
  int i = 0;
  int temp = 0;            


  va_list pointer;


  va_start(pointer, NumofPara);
  
  for( i = 0; i < NumofPara; i++ )
  {
    temp = va_arg(pointer, int);
    printf("item: %d
", temp);
  }
  
  va_end(pointer);


  task();
}


void task(void)
{
  printf("this is my task
");
}


int main()
{
  user_task(task, 3, 2, 3, 4);
}

輸出的結果如下圖:

1ed38898-6f2a-11ed-8abf-dac502259ad0.png






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136698
  • 回調函數
    +關注

    關注

    0

    文章

    87

    瀏覽量

    11554

原文標題:C語言|可變參數函數

文章出處:【微信號:玩轉單片機,微信公眾號:玩轉單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    可變參數函數的實現原理

    ;);printf("%d, %c", i, j);不知道你注意過沒有,printf函數參數個數是可變的,上面的第個例子只有1個參數,第
    發表于 10-21 22:18

    C語言——可變參數問題.

    *argv[]);  函數參數是argc和argv。   深入想一下,"只能在運行時確定參數形式",也就是說你沒辦法從聲明中看到所接受的參數
    發表于 04-20 15:17

    C語言中可變參數的定義

    文章目錄文章目的寫代碼的時候經常需要通過打印trace來debug代碼,于是就有了自己封裝個TRACE函數的想法。知識點(1)打印trace的時候每次需要打印的參數個數不是
    發表于 07-14 07:43

    簡單概述一下窗口之間傳遞參數的機制

    簡單概述一下窗口之間傳遞參數的機制–“張三去商店買煙”分解動作:誰?–張三去哪?–商店要干嘛?–買煙怎么去?–走路去結果?–張三得到煙窗口(A):張三信號(signal):想要買煙連接方式
    發表于 01-18 09:01

    怎么設計c語言的可變參數函數

    怎么設計c語言的可變參數函數
    發表于 10-27 07:10

    如何才能在51系統使用類似printf這樣的可變參數的子函數呢?

    學習自己構造可變參數的子函數使用“...”,做參數。知道是用堆棧傳遞函數的,但是在keil中仿真
    發表于 10-30 08:27

    可變函數網絡電路圖

    可變函數網絡電路圖
    發表于 02-17 17:34 ?497次閱讀
    <b class='flag-5'>可變</b><b class='flag-5'>函數</b>網絡電路圖

    指針作為函數參數

    指針作為函數參數 大多數C程序員開始使用指針時是用它們實現函數參數,所謂可變參數。為了理解
    發表于 07-29 11:49 ?2712次閱讀

    關于深度學習最常用的10大激活函數詳解

    那就讓我們來整理一下深度學習中離不開的激活函數
    的頭像 發表于 03-12 17:45 ?3218次閱讀
    關于深度<b class='flag-5'>學習</b>最常用的10大激活<b class='flag-5'>函數</b>詳解

    分享一下嵌入式 HarmonyOS 的學習思路

    在我拿到小熊派鴻蒙開發板后,首先按照教程,搭建了開發環境,體驗了一下程序是如何進行編譯和下載,以及初步了解了一下資料的架構。關于小熊派鴻蒙開發板的信息,可以戳這里開始學習 Harmony...
    發表于 12-22 19:02 ?9次下載
    分享<b class='flag-5'>一下</b>嵌入式 HarmonyOS 的<b class='flag-5'>學習</b>思路

    C語言-函數可變形參(不定形參)

    這篇文章介紹C語言函數的不定參數可變參數 形參,實現printf樣的傳參效果。
    的頭像 發表于 08-14 09:58 ?2651次閱讀

    簡單一下多點觸控協議

    前面簡單聊了一下多點觸控協議,接下來找個驅動來看看具體實現。目前市面上多點觸控芯片用得比較多的主要是匯頂和敦泰。
    的頭像 發表于 04-17 09:20 ?2504次閱讀

    學習一下ARM的智能功率分配技術

    今天來學習一下ARM的“智能功率分配”(Intelligent Power Allocation)技術,下文中簡稱IPA。
    發表于 07-14 14:18 ?990次閱讀
    <b class='flag-5'>學習</b><b class='flag-5'>一下</b>ARM的智能功率分配技術

    如何實現個自己的printf函數代碼?

    在C語言中,可變參數函數可變參數宏都允許函數或宏接受不定數量的
    發表于 09-06 14:20 ?974次閱讀
    如何實現<b class='flag-5'>一</b>個自己的printf<b class='flag-5'>函數</b>代碼?

    python函數的萬能參數

    我們通過簡單的事例來展示一下函數的萬能參數,我們先寫個最
    的頭像 發表于 07-17 14:56 ?330次閱讀
    python<b class='flag-5'>函數</b>的萬能<b class='flag-5'>參數</b>
    主站蜘蛛池模板: 欧洲另类一二三四区| 女子叉开腿让男子桶免费软件 | 男人扒开添女人屁股| 99久久久久精品国产免费麻豆| 欧美日韩黄色| 国产精品久久久久无码AV色戒| 亚洲精品婷婷无码成人A片在线 | 恋夜直播午夜秀场最新| 99久久精品全部| 四虎成人影院| 久久伊人中文字幕有码| SM高H黄暴NP辣H调教性奴| 無码一区中文字幕少妇熟女网站 | 忘忧草高清| 牛牛在线视频| 久久青青草原| 国产在线观看免费观看不卡| 菠萝菠萝蜜视频在线看1| 综合激情区视频一区视频二区| 小黄飞二人转| 四虎国产一区| 人妻熟妇乱又伦精品视频中文字幕| 久久日本精品国产精品| 国产精品毛片AV久久97| 动漫美女搞鸡| 99爱在线精品视频免费观看9| 一个人的免费完整在线观看HD| 羞羞答答的免费视频在线观看| 日本高清免费在线| 女性BBWBBWBBWBBW| 蜜桃AV色欲A片精品一区| 久久精品18| 久久国内精品| 回复术士勇者免费观看全集 | 亚欧视频在线观看| 熟女人妻AV五十路六十路| 青青草国产精品| 欧美zozofoot| 亚洲精品视频在线播放| 色中色辩论区| 肉欲横流(NP高H)|