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

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

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

3天內不再提示

C語言可變形參是什么

嵌入式技術 ? 來源:嵌入式技術 ? 作者:嵌入式技術 ? 2022-08-18 21:40 ? 次閱讀

C語言可變形參

??C語言允許定義參數數量可變的函數,這稱為可變參數函數(variadic function)。這種函數需要固定數量的強制參數(mandatory argument),后面是數量可變的可選參數(optional argument)。

1.可變形參相關函數

#include 
void va_start(va_list ap, last);
type va_arg(va_list ap, type);
void va_end(va_list ap);
void va_copy(va_list dest, va_list src);

?va_start完成ap指針初始化,以供va_arg和va_end后續使用,該函數必須先調用。參數last是變量參數列表前最后一個參數的名稱;
va_arg實現下一個參數的類型和值的獲取。參數ap是由va_start初始化的參數列表。對va_arg()的每次調用都會修改ap,以便獲取下一個參數。參數類型type是一個指定的數據類型。
va_end將ap指向NULL。
va_copy將參數列表src復制到dest中,該函數在c99才有定義。

2.可變形參模仿printf函數

#include 
#include 
void my_printf(const char *fmt,...);
int main()
{
	my_printf("%s\n","123456");
	my_printf("%d %%\n",55);
	my_printf("%f\n",789.56);
	my_printf("%c\n",'c');
	my_printf("%ld,%lf\n",1234567890123,45.789625);
}
void my_printf(const char *fmt,...)
{
	va_list ap;
	va_start(ap,fmt);//ap=fmt
	char c,*s;
	int d;
	float f;
	long l;
	double b;
	while(*fmt)
	{
		if(*fmt!='%')
		{
			putchar(*fmt);//輸出%前所有字符
		}
		else 
		{
			fmt++;//跳過%
			switch(*fmt)
			{
				case 'c'://字符
					c=(char )va_arg(ap,int);//字符存儲時按int空間處理
					fprintf(stdout,"%c",c);
					break;
				case 'd'://整數
					d=va_arg(ap,int);
					fprintf(stdout,"%d",d);
					break;
				case 'f'://浮點數
					f=(float)va_arg(ap,double);//浮點數據處理時按double處理
					fprintf(stdout,"%f",f);
					break;
				case '%'://%%
					putchar(*fmt);
					break;
				case 's'://字符串
					s=va_arg(ap,char *);
					fprintf(stdout,"%s",s);
					break;
				case 'l':
					fmt++;
					if(*fmt=='d')//長整形%ld
					{
						l=va_arg(ap,long);
						fprintf(stdout,"%ld",l);
					}
					else if(*fmt=='f')//雙精度浮點型%lf
					{
						b=va_arg(ap,double);
						fprintf(stdout,"%lf",b);
					}
					break;
			}
		}
		fmt++;
	}
	va_end(ap);//ap=NULL
}

??運行效果:

[wbyq@wbyq 0414work]$ gcc main.c 
[wbyq@wbyq 0414work]$ ./a.out 
123456
55 %
789.559998
c
1234567890123,45.789625

審核編輯 黃昊宇

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

    關注

    180

    文章

    7614

    瀏覽量

    137249
收藏 人收藏

    評論

    相關推薦

    電壓放大器在可變形機翼縮比模型主動變形實驗中的應用

    實驗名稱:可變形機翼縮比模型主動變形實驗驗證研究方向:介紹了可用于低速風洞實驗要求的可變形縮比模型的設計方案,以及粘接MFC致動器之后,可變形機翼縮比模型在1500V電壓驅動下的主動
    的頭像 發表于 09-30 14:45 ?1700次閱讀
    電壓放大器在<b class='flag-5'>可變形</b>機翼縮比模型主動<b class='flag-5'>變形</b>實驗中的應用

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

    ;The value is %d!\n", value);  這種可變參數可以說是C語言一個比較難理解的部分,這里會由幾個問題引發一些對它的分析。   注意:在C++中有函數重載(ov
    發表于 04-20 15:17

    C語言可變參數的定義

    C語言可變參數的定義。//可變參數用...來表示void TRACE(char *format, ...)(2)可變參數函數需要用到的宏
    發表于 07-14 07:43

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

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

    可變形電池正在研發,彎曲手機更近了

    日前韓國科學家發表了論文,稱“世界上首款”可變形鋰電池的研發工作非常順利,這款產品的性能已經相對穩定。該產品的研發為今后可變形手機的到來奠定了基礎。根據韓國聯合通
    發表于 01-16 10:10 ?798次閱讀

    基于稀疏表示的可變形部件模型目標檢測

    基于可變形部件模型DPM的目標檢測算法采用方向梯度直方圖HOG進行特征表示,由于HOG無法處理模糊的邊界而且忽略了平滑的特征區域,從而影響了DPM算法的性能。為了提高DPM的性能,提出了一種基于稀疏
    發表于 11-21 16:52 ?11次下載

    融合分支定界的可變形部件模型的行人檢測

    針對可變形部件模型(DPM)算法在行人檢測領域中的檢測精度高,但由于在特征提取和行人定位兩步中的計算量過大,導致檢測速度過慢而不能應用于實時行人檢測的問題,提出了一種融合分支定界算法和級聯
    發表于 11-30 15:52 ?0次下載

    基于可變形卷積網絡的恒星大氣物理參數檢測

    基于可變形卷積網絡的恒星大氣物理參數檢測
    發表于 06-18 14:53 ?15次下載

    基于可變形卷積網絡的恒星大氣物理參數測量

    基于可變形卷積網絡的恒星大氣物理參數測量
    發表于 07-02 16:07 ?14次下載

    C語言-函數的定義、聲明、傳

    C語言里函數是非常重要的知識點,一個完整的C語言程序就是由主函數和各個子函數組成的,主函數調用子函數完成各個邏輯功能。 這篇文章作為C
    的頭像 發表于 08-14 09:57 ?1986次閱讀

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

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

    C語言-指針作為函數形類型

    C語言函數里最常用就是指針傳和返回地址,特別是字符串處理中,經常需要封裝各種功能函數完成數據處理。
    的頭像 發表于 08-14 10:05 ?1928次閱讀

    C語言可變參數的使用詳解

    c/c++語言具備一個不同于其他編程語言的的特性,即支持可變參數。
    的頭像 發表于 03-08 09:47 ?1651次閱讀

    C語言函數參數介紹

    C語言數組元素作函數實參 數組元素可以用作函數實參,不能用作形C語言在用數組元素作函數實參時,把實參的值傳給形
    的頭像 發表于 03-10 14:30 ?2440次閱讀

    C語言中的可變參數介紹

    C 語言為這種情況提供了一個解決方案,它允許您定義一個函數,能根據具體的需求接受可變數量的參數
    發表于 02-28 14:00 ?344次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>中的<b class='flag-5'>可變</b>參數介紹
    主站蜘蛛池模板: 999毛片| videosgratis欧美另类老太| 国产妇女在线| 欧美大全| 新版bt天堂资源在线| 亚洲综合色网| 特黄特色大片免费播放器9| 日韩一卡 二卡 三卡 四卡 免费视频 | 香蕉爱爱视频| 三级毛片免费看| 美女视频很黄很暴黄是免费的| 好男人www社区影视在线| 你懂的网址免费国产| 美女天天色| 成年人毛片网站| 国产va免费精品| 久久久噜噜噜久久中文字幕色伊伊| 特级毛片免费视频| 日本高清视频色www在线观看| 久久久夜色精品国产噜噜| 丁香六月婷婷综合| 天天干天天射天天舔| 天天爽天天干| 加勒比在线免费视频| 黄色国产在线视频| 99热都是精品| 日本香蕉视频| 日本久久久久久久| 国产一卡二卡3卡4卡四卡在线 | 午夜啪啪福利视频| 欧美黄色三级视频| 97在线亚洲| 狠狠干狠狠插| 老师在办公室被躁得舒服小说| 搜索黄色毛片| 狠狠色丁香久久综合网| 天天干天天在线| 68日本xxxxxxxxx777| 无遮挡一级毛片| 国久久| 一级特黄aaa大片大全|