可变参数表 C语言 多态,C语言可变长参数实现“多态”.pdf
您所在位置:網(wǎng)站首頁(yè) > 海量文檔
 > 計(jì)算機(jī) > C/C++資料
C語(yǔ)言可變長(zhǎng)參數(shù)實(shí)現(xiàn)“多態(tài)”.pdf6頁(yè)
本文檔一共被下載:次,您可全文免費(fèi)在線(xiàn)閱讀后下載本文檔。
下載提示
1.本站不保證該用戶(hù)上傳的文檔完整性,不預(yù)覽、不比對(duì)內(nèi)容而直接下載產(chǎn)生的反悔問(wèn)題本站不予受理。
2.該文檔所得收入(下載+內(nèi)容+預(yù)覽三)歸上傳者、原創(chuàng)者。
3.登錄后可充值,立即自動(dòng)返金幣,充值渠道很便利
砍砍樹(shù)樹(shù)的的
知知識(shí)識(shí)就就是是力力量量,,技技術(shù)術(shù)成成就就夢(mèng)夢(mèng)想想。。SSttaannddiinngg oonn SShhoouullddeerrss oo GGiiaannttss..
CC語(yǔ)語(yǔ)言言可可變變長(zhǎng)長(zhǎng)參參數(shù)數(shù)實(shí)實(shí)現(xiàn)現(xiàn) ““多多態(tài)態(tài)””
分類(lèi): C/C++ 2013-12-02 10:30 173人閱讀 評(píng)論 (0) 收藏 舉報(bào)
c語(yǔ)言多態(tài)面向?qū)ο?/p>
一一、、問(wèn)問(wèn)題題來(lái)來(lái)源源
先看看困惑來(lái)來(lái)源:
這讓我很疑惑,難道c也支持 “多態(tài)”的特性么?貌似沒(méi)見(jiàn)過(guò)呀~
二二、、解解決決方方案案
google幫忙,明白了一二,特此記錄:
原來(lái)這種 “多態(tài)”是通過(guò)c語(yǔ)言的可變長(zhǎng)參數(shù)實(shí)現(xiàn)的 (python也具有這種特性)
有關(guān)可變長(zhǎng)參數(shù)的介紹見(jiàn)文章末尾的參考列表,說(shuō)的很詳細(xì)。
截取關(guān)鍵的內(nèi)容:
1.可變長(zhǎng)參數(shù)的宏定義:
(學(xué)習(xí)宏函數(shù)的典例呀)
// stdarg.h
#define va_start _crt_va_start
#define va_arg _crt_va_arg
#define va_end _crt_va_end
// vadefs.h
typedef char * va_list;
#define _crt_va_start(ap,v) ( ap = (va_list)_ADDRE OF(v) + _INT IZEOF(v) )
#define _crt_va_arg(ap,t) ( *(t *)((ap += _INT IZEOF(t)) - _INT IZEOF(t)) )
#define _crt_va_end(ap) ( ap = (va_list)0 )
#define _ADDRE OF(v) ( &(v) )
#define _INT IZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
2.可變長(zhǎng)參數(shù)的宏介紹:
C語(yǔ)言可變參數(shù)通過(guò)三個(gè)宏 (va_start、va_end、va_arg)和一個(gè)類(lèi)型 (va_list)實(shí)現(xiàn),
void va_start ( va_list ap, paramN );
參數(shù):
ap: 可變參數(shù)列表地址
paramN: 確定的參數(shù)
1
功能:初始化可變參數(shù)列表 (把函數(shù)在 paramN 之后的參數(shù)地址放到 ap 中)。
void va_end ( va_list ap );
功能:關(guān)閉初始化列表 (將 ap 置空)。
type va_arg ( va_list ap, type );
功能:返回下一個(gè)參數(shù)的值。
va_list :存儲(chǔ)參數(shù)的類(lèi)型信息。
好了,綜合上面3個(gè)宏和一個(gè)類(lèi)型可以猜出如何實(shí)現(xiàn)C語(yǔ)言可變長(zhǎng)參數(shù)函數(shù):用 va_start 獲取參數(shù)列表 (的地址)存儲(chǔ)到 ap 中,
按照說(shuō)明,我實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的測(cè)試代碼,來(lái)測(cè)試可變長(zhǎng)參數(shù):
/*************************************************************************
* @File Name: test.c
* @Author: kehr
* @Mail: kehr163@163.com
* @Created Time: 2013年11月30日 星期六 19時(shí)06分32秒
* @Copyright: GPL 2.0 applies
* @Purpose: 測(cè)試可變長(zhǎng)參數(shù),實(shí)現(xiàn)c的“多態(tài)”
*************************************************************************/
#include
#include
void show(int first_param,int flag, ...);
int main()
{
show(1,2,3,4,5);
return 0;
}
void show(int first_param,int flag, ...)
{
//定義參數(shù)列表
va_list v
發(fā)表評(píng)論
請(qǐng)自覺(jué)遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
用戶(hù)名:
驗(yàn)證碼:
匿名?
發(fā)表評(píng)論
總結(jié)
以上是生活随笔為你收集整理的可变参数表 C语言 多态,C语言可变长参数实现“多态”.pdf的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数码显示实验报告C语言,数码问题C语言A
- 下一篇: c语言while计算机编写,计算机等级考