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