在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

簡單學(xué)習(xí)一下可變參數(shù)函數(shù)

玩轉(zhuǎn)單片機(jī) ? 來源:玩轉(zhuǎn)單片機(jī) ? 作者:noah ? 2022-11-29 09:29 ? 次閱讀

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

在框架的編寫中,都會(huì)考慮很多東西,對于不確定的輸入,使用可變參數(shù)函數(shù)也是個(gè)不錯(cuò)的解決方案,下面就來簡單學(xué)習(xí)一下。

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


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


  //新建一個(gè)va_list類型的指針
  va_list pointer;


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


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

更秀一點(diǎn)的操作可以配合回調(diào)函數(shù)使用,靈活調(diào)用需要觸發(fā)的任務(wù):

#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);
}

輸出的結(jié)果如下圖:

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






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7605

    瀏覽量

    136963
  • 回調(diào)函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    87

    瀏覽量

    11569

原文標(biāo)題:C語言|可變參數(shù)函數(shù)

文章出處:【微信號:玩轉(zhuǎn)單片機(jī),微信公眾號:玩轉(zhuǎn)單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    可變參數(shù)函數(shù)的實(shí)現(xiàn)原理

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

    C語言——可變參數(shù)問題.

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

    C語言中可變參數(shù)的定義

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

    簡單概述一下窗口之間傳遞參數(shù)的機(jī)制

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

    怎么設(shè)計(jì)c語言的可變參數(shù)函數(shù)

    怎么設(shè)計(jì)c語言的可變參數(shù)函數(shù)
    發(fā)表于 10-27 07:10

    如何才能在51系統(tǒng)使用類似printf這樣的可變參數(shù)的子函數(shù)呢?

    學(xué)習(xí)自己構(gòu)造可變參數(shù)的子函數(shù)使用“...”,做參數(shù)。知道是用堆棧傳遞函數(shù)的,但是在keil中仿真
    發(fā)表于 10-30 08:27

    可變函數(shù)網(wǎng)絡(luò)電路圖

    可變函數(shù)網(wǎng)絡(luò)電路圖
    發(fā)表于 02-17 17:34 ?498次閱讀
    <b class='flag-5'>可變</b><b class='flag-5'>函數(shù)</b>網(wǎng)絡(luò)電路圖

    指針作為函數(shù)參數(shù)

    指針作為函數(shù)參數(shù) 大多數(shù)C程序員開始使用指針時(shí)是用它們實(shí)現(xiàn)函數(shù)參數(shù),所謂可變參數(shù)。為了理解
    發(fā)表于 07-29 11:49 ?2714次閱讀

    關(guān)于深度學(xué)習(xí)最常用的10大激活函數(shù)詳解

    那就讓我們來整理一下深度學(xué)習(xí)中離不開的激活函數(shù)
    的頭像 發(fā)表于 03-12 17:45 ?3231次閱讀
    關(guān)于深度<b class='flag-5'>學(xué)習(xí)</b>最常用的10大激活<b class='flag-5'>函數(shù)</b>詳解

    分享一下嵌入式 HarmonyOS 的學(xué)習(xí)思路

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

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

    這篇文章介紹C語言函數(shù)的不定參數(shù)可變參數(shù) 形參,實(shí)現(xiàn)printf樣的傳參效果。
    的頭像 發(fā)表于 08-14 09:58 ?2683次閱讀

    簡單一下多點(diǎn)觸控協(xié)議

    前面簡單聊了一下多點(diǎn)觸控協(xié)議,接下來找個(gè)驅(qū)動(dòng)來看看具體實(shí)現(xiàn)。目前市面上多點(diǎn)觸控芯片用得比較多的主要是匯頂和敦泰。
    的頭像 發(fā)表于 04-17 09:20 ?2526次閱讀

    學(xué)習(xí)一下ARM的智能功率分配技術(shù)

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

    如何實(shí)現(xiàn)個(gè)自己的printf函數(shù)代碼?

    在C語言中,可變參數(shù)函數(shù)可變參數(shù)宏都允許函數(shù)或宏接受不定數(shù)量的
    發(fā)表于 09-06 14:20 ?991次閱讀
    如何實(shí)現(xiàn)<b class='flag-5'>一</b>個(gè)自己的printf<b class='flag-5'>函數(shù)</b>代碼?

    python函數(shù)的萬能參數(shù)

    我們通過個(gè)簡單的事例來展示一下函數(shù)的萬能參數(shù),我們先寫個(gè)最
    的頭像 發(fā)表于 07-17 14:56 ?349次閱讀
    python<b class='flag-5'>函數(shù)</b>的萬能<b class='flag-5'>參數(shù)</b>
    主站蜘蛛池模板: 狠狠五月婷婷| 9299yy看片淫黄大片在线| 色综合天天综合网国产成人网 | 好男人社区在线观看www| 美女在线看永久免费网址| 美国一级毛片免费看成人| 久久青| 电影天堂在线观看三级| 永久视频在线观看| 婷婷sese| 色站视频| 久久免费视频99| freesexvideo性2| 天天操视频 夜夜| 国产精品自在线天天看片| 黄色网页在线观看| 女同性大尺度床戏视频| 伊人网大香| 日韩精品你懂的在线播放| 美女流白浆网站| 爱爱网站免费| 奇米影视777狠狠狠888不卡| 51vv福利视频在线精品| 日韩孕交| 天堂在线中文字幕| 妹子干综合网| 一级一黄在线观看视频免费| 久操视频在线播放| 真人午夜a一级毛片| 高清xxx| 国产成人乱码一区二区三区| 四虎影视国产精品| 黄网站免费大全| 天天爽夜夜爽视频| 2019天天射干| 在线看片成人| 女人张腿让男子桶免费动态图| 2018天堂视频免费观看| 国产成人精品一区二区三区| 欧美成人h精品网站| 色猫av|