| 订阅 | 在线投稿
分享
 
 
当前位置: 王朝网络 >> c/c++ >> shui di shi chuan C yu yan zhi ke bian shen shu wen ti

shui di shi chuan C yu yan zhi ke bian shen shu wen ti

2008-06-01 02:07:24 编辑來源:互联网 评论
 
 
 
本文为【水滴石穿C语言之可变参数问题】的拼音翻译版
  C yu yan zhong you yi zhong chang du bu que ding de shen shu , xing ru :"…", ta zhu yao yong zai shen shu ge shu bu que ding de han shu zhong , wo men zui qing yi xiang dao de li zi shi PRintf han shu 。
  yuan xing :
  int printf( const char *format [, argument]... );
  shi yong li :printf("Enjoy yourself everyday!\n");
  printf("The value is %d!\n", value);
  zhe zhong ke bian shen shu ke yi shuo shi C yu yan yi ge bi jiao nan li jie de bu fen , zhe li hui you ji ge wen ti yin fa yi xie dui ta de fen xi 。
  zhu chong : zai C++ zhong you han shu chong zai (overload) ke yi yong lai qu bie bu tong han shu shen shu de tiao yong , dan ta huan shi bu neng biao shi ren yi shu liang de han shu shen shu 。
  wen ti :printf de shi xian
  qing wen , ru he zi ji shi xian printf han shu , ru he chu li qi zhong de ke bian shen shu wen ti ? da an yu fen xi :
  zai biao zhun C yu yan zhong ding yi le yi ge tou wen jian zhuan men yong lai dui fu ke bian shen shu lie biao , ta bao han le yi zu hong , he yi ge va_list de typedef sheng ming 。 yi ge dian xing shi xian ru xia :
  typedef char* va_list;
  #define va_start(list) list = (char*)&va_alist
  #define va_end(list)
  #define va_arg(list, mode)\
  ((mode*) (list += sizeof(mode)))[-1]
  zi ji shi xian printf:
  #include
  int printf(char* format, …)
  {
  va_list ap;
  va_start(ap, format);
  int n = vprintf(format, ap);
  va_end(ap);
  return n;
  }
  wen ti : yun xing shi cai que ding de shen shu
  you mei you ban fa xie yi ge han shu , zhe ge han shu shen shu de ju ti xing shi ke yi zai yun xing shi cai que ding ?
  da an yu fen xi :
  mu qian mei you " zheng gui " de jie jue ban fa , bu guo du men pian fang dao shi you yi ge , yin wei you yi ge han shu yi jing gei wo men zuo chu le zhe fang mian de bang yang , na jiu shi main(), ta de yuan xing shi :
  int main(int argc,char *argv[]);
  han shu de shen shu shi argc he argv。
  shen ru xiang yi xia ," zhi neng zai yun xing shi que ding shen shu xing shi ", ye jiu shi shuo ni mei ban fa cong sheng ming zhong kan dao suo jie shou de shen shu , ye ji shi shen shu gen ben jiu mei you gu ding de xing shi 。 chang yong de ban fa shi ni ke yi tong guo ding yi yi ge void * lei xing de shen shu , yong ta lai zhi xiang shi ji de shen shu qu , ran hou zai han shu zhong gen ju gen ju xu yao ren yi jie shi ta men de han yi 。 zhe jiu shi main han shu zhong argv de han yi , er argc, ze yong lai biao ming shi ji de shen shu ge shu , zhe wei wo men shi yong ti gong le jin yi bu de fang bian , dang ran , zhe ge shen shu bu shi bi xu de 。
  sui ran shen shu mei you gu ding xing shi , dan wo men bi ran yao zai han shu zhong jie xi shen shu de yi yi , yin ci , li suo dang ran hui you yi ge yao qiu , jiu shi tiao yong zhe he bei tiao zhe zhi jian yao dui shen shu qu nei rong de ge shi , da xiao , you xiao xing deng suo you fang mian da cheng yi zhi , fou ze nan yuan bei zhe ge shuo ge hua jiu can le 。
  wen ti : ke bian chang shen shu de chuan di
  you shi hou , xu yao bian xie yi ge han shu , jiang ta de ke bian chang shen shu zhi jie chuan di gei ling wai de han shu , qing wen , zhe ge yao qiu neng fou shi xian ?
  da an yu fen xi :
  mu qian , ni shang wu ban fa zhi jie zuo dao zhe yi dian , dan shi wo men ke yi yu hui qian jin , shou xian , wo men ding yi bei tiao yong han shu de shen shu wei va_list lei xing , tong shi zai tiao yong han shu zhong jiang ke bian chang shen shu lie biao zhuan huan wei va_list, zhe yang jiu ke yi jin xing bian chang shen shu de chuan di le 。 kan ru xia suo shi :
  void subfunc (char *fmt, va_list argp)
  {
  ...
  arg = va_arg (fmt, argp); /* cong argp zhong zhu yi qu chu suo yao de shen shu */
  ...
  }
  void mainfunc (char *fmt, ...)
  {
  va_list argp;
  va_start (argp, fmt); /* jiang ke bian chang shen shu zhuan huan wei va_list */
  subfunc (fmt, argp); /* jiang va_list chuan di gei zi han shu */
  va_end (argp);
  ...
  }
  wen ti : ke bian chang shen shu zhong lei xing wei han shu zhi zhen
  wo xiang shi yong va_arg lai ti qu chu ke bian chang shen shu zhong lei xing wei han shu zhi zhen de shen shu , jie guo que zong shi bu zheng que , wei shen me ?
  da an yu fen xi :
  zhe ge yu va_arg de shi xian you guan 。 yi ge jian dan de 、 yan shi ban de va_arg shi xian ru xia :
  #define va_arg(argp, type) \
  (*(type *)(((argp) += sizeof(type)) - sizeof(type)))
  qi zhong ,argp de lei xing shi char *。
  jia ru ni xiang yong va_arg cong ke bian shen shu lie biao zhong ti qu chu han shu zhi zhen lei xing de shen shu , li ru
  int (*)(), ze va_arg(argp, int (*)()) bei kuo zhan wei :
  (*(int (*)() *)(((argp) += sizeof (int (*)())) -sizeof (int (*)())))
  xian ran ,(int (*)() *) shi wu yi yi de 。
  jie jue zhe ge wen ti de ban fa shi jiang han shu zhi zhen yong typedef ding yi cheng yi ge du li de shu ju lei xing , li ru :
  typedef int (*funcptr)();
  zhe shi hou zai tiao yong va_arg(argp, funcptr) jiang bei kuo zhan wei :
  (* (funcptr *)(((argp) += sizeof (funcptr)) - sizeof (funcptr)))
  zhe yang jiu ke yi tong guo bian yi jian cha le 。
  wen ti : ke bian chang shen shu de huo qu
  you zhe yang yi ge ju you ke bian chang shen shu de han shu , qi zhong you xia lie dai ma yong lai huo qu lei xing wei float de shi shen :
  va_arg (argp, float);
  zhe yang zuo ke yi ma ?
  da an yu fen xi :
  bu ke yi 。 zai ke bian chang shen shu zhong , ying yong de shi " jia kuan " yuan ze 。 ye jiu shi float lei xing bei kuo zhan cheng double;char, short bei kuo zhan cheng int。 yin ci , jia ru ni yao qu ke bian chang shen shu lie biao zhong yuan lai wei float lei xing de shen shu , xu yao yong va_arg(argp, double)。 dui char he short lei xing de ze yong va_arg(argp, int)。
  
  
  wen ti : ding yi ke bian chang shen shu de yi ge xian zhi
  wei shen me wo de bian yi qi bu da ying wo ding yi ru xia de han shu , ye jiu shi ke bian chang shen shu , dan shi mei you ren he de gu ding shen shu ?
  int f (...)
  {
  ...
  }
  da an yu fen xi :
  bu ke yi 。 zhe shi ANSI C suo yao qiu de , ni zhi shao de ding yi yi ge gu ding shen shu 。
  zhe ge shen shu jiang bei chuan di gei va_start(), ran hou yong va_arg() he va_end() lai que ding suo you shi ji tiao yong shi ke bian chang shen shu de lei xing he zhi 。
水滴石穿C语言之可变参数问题
geng duo nei rong qing kan C/C++ jin jie ji shu wen dang zhuan ti , huo【原文】【汉音对照
 
 
 
 
 
 
 
 
 
日版宠物情人插曲《Winding Road》歌词

日版宠物情人2017的插曲,很带节奏感,日语的,女生唱的。 最后听见是在第8集的时候女主手割伤了,然后男主用嘴帮她吸了一下,插曲就出来了。 歌手:Def...

兄弟共妻,我成了他们夜里的美食

老钟家的两个儿子很特别,就是跟其他的人不太一样,魔一般的执着。兄弟俩都到了要结婚的年龄了,不管自家老爹怎么磨破嘴皮子,兄弟俩说不娶就不娶,老父母为兄弟两操碎了心...

如何磨出破洞牛仔裤?牛仔裤怎么剪破洞?

把牛仔裤磨出有线的破洞 1、具体工具就是磨脚石,下面垫一个硬物,然后用磨脚石一直磨一直磨,到把那块磨薄了,用手撕开就好了。出来的洞啊很自然的。需要猫须的话调几...

我就是扫描下图得到了敬业福和爱国福

先来看下敬业福和爱国福 今年春节,支付宝再次推出了“五福红包”活动,表示要“把欠大家的敬业福都还给大家”。 今天该活动正式启动,和去年一样,需要收集“五福”...

冰箱异味产生的原因和臭味去除的方法

有时候我们打开冰箱就会闻到一股异味,冰箱里的这种异味是因为一些物质发出的气味的混合体,闻起来让人恶心。 产生这些异味的主要原因有以下几点。 1、很多人有这种习...

 
 
 C yu yan zhong you yi zhong chang du bu que ding de shen shu , xing ru :"…", ta zhu yao yong zai shen shu ge shu bu que ding de han shu zhong , wo men zui qing yi xiang dao de li zi shi PRintf han shu 。    yuan xing :   int printf( const char *format [, argument]... );    shi yong li :printf("Enjoy yourself everyday!\n");   printf("The value is %d!\n", value);    zhe zhong ke bian shen shu ke yi shuo shi C yu yan yi ge bi jiao nan li jie de bu fen , zhe li hui you ji ge wen ti yin fa yi xie dui ta de fen xi 。    zhu chong : zai C++ zhong you han shu chong zai (overload) ke yi yong lai qu bie bu tong han shu shen shu de tiao yong , dan ta huan shi bu neng biao shi ren yi shu liang de han shu shen shu 。    wen ti :printf de shi xian    qing wen , ru he zi ji shi xian printf han shu , ru he chu li qi zhong de ke bian shen shu wen ti ? da an yu fen xi :    zai biao zhun C yu yan zhong ding yi le yi ge tou wen jian zhuan men yong lai dui fu ke bian shen shu lie biao , ta bao han le yi zu hong , he yi ge va_list de typedef sheng ming 。 yi ge dian xing shi xian ru xia :   typedef char* va_list;   #define va_start(list) list = (char*)&va_alist   #define va_end(list)   #define va_arg(list, mode)\   ((mode*) (list += sizeof(mode)))[-1]    zi ji shi xian printf:   #include   int printf(char* format, …)   {   va_list ap;   va_start(ap, format);   int n = vprintf(format, ap);   va_end(ap);   return n;   }    wen ti : yun xing shi cai que ding de shen shu    you mei you ban fa xie yi ge han shu , zhe ge han shu shen shu de ju ti xing shi ke yi zai yun xing shi cai que ding ?    da an yu fen xi :    mu qian mei you " zheng gui " de jie jue ban fa , bu guo du men pian fang dao shi you yi ge , yin wei you yi ge han shu yi jing gei wo men zuo chu le zhe fang mian de bang yang , na jiu shi main(), ta de yuan xing shi :   int main(int argc,char *argv[]);    han shu de shen shu shi argc he argv。    shen ru xiang yi xia ," zhi neng zai yun xing shi que ding shen shu xing shi ", ye jiu shi shuo ni mei ban fa cong sheng ming zhong kan dao suo jie shou de shen shu , ye ji shi shen shu gen ben jiu mei you gu ding de xing shi 。 chang yong de ban fa shi ni ke yi tong guo ding yi yi ge void * lei xing de shen shu , yong ta lai zhi xiang shi ji de shen shu qu , ran hou zai han shu zhong gen ju gen ju xu yao ren yi jie shi ta men de han yi 。 zhe jiu shi main han shu zhong argv de han yi , er argc, ze yong lai biao ming shi ji de shen shu ge shu , zhe wei wo men shi yong ti gong le jin yi bu de fang bian , dang ran , zhe ge shen shu bu shi bi xu de 。    sui ran shen shu mei you gu ding xing shi , dan wo men bi ran yao zai han shu zhong jie xi shen shu de yi yi , yin ci , li suo dang ran hui you yi ge yao qiu , jiu shi tiao yong zhe he bei tiao zhe zhi jian yao dui shen shu qu nei rong de ge shi , da xiao , you xiao xing deng suo you fang mian da cheng yi zhi , fou ze nan yuan bei zhe ge shuo ge hua jiu can le 。    wen ti : ke bian chang shen shu de chuan di    you shi hou , xu yao bian xie yi ge han shu , jiang ta de ke bian chang shen shu zhi jie chuan di gei ling wai de han shu , qing wen , zhe ge yao qiu neng fou shi xian ?    da an yu fen xi :    mu qian , ni shang wu ban fa zhi jie zuo dao zhe yi dian , dan shi wo men ke yi yu hui qian jin , shou xian , wo men ding yi bei tiao yong han shu de shen shu wei va_list lei xing , tong shi zai tiao yong han shu zhong jiang ke bian chang shen shu lie biao zhuan huan wei va_list, zhe yang jiu ke yi jin xing bian chang shen shu de chuan di le 。 kan ru xia suo shi :   void subfunc (char *fmt, va_list argp)   {   ...   arg = va_arg (fmt, argp); /* cong argp zhong zhu yi qu chu suo yao de shen shu */   ...   }   void mainfunc (char *fmt, ...)   {   va_list argp;   va_start (argp, fmt); /* jiang ke bian chang shen shu zhuan huan wei va_list */   subfunc (fmt, argp); /* jiang va_list chuan di gei zi han shu */   va_end (argp);   ...   }    wen ti : ke bian chang shen shu zhong lei xing wei han shu zhi zhen    wo xiang shi yong va_arg lai ti qu chu ke bian chang shen shu zhong lei xing wei han shu zhi zhen de shen shu , jie guo que zong shi bu zheng que , wei shen me ?    da an yu fen xi :    zhe ge yu va_arg de shi xian you guan 。 yi ge jian dan de 、 yan shi ban de va_arg shi xian ru xia :   #define va_arg(argp, type) \   (*(type *)(((argp) += sizeof(type)) - sizeof(type)))    qi zhong ,argp de lei xing shi char *。    jia ru ni xiang yong va_arg cong ke bian shen shu lie biao zhong ti qu chu han shu zhi zhen lei xing de shen shu , li ru   int (*)(), ze va_arg(argp, int (*)()) bei kuo zhan wei :   (*(int (*)() *)(((argp) += sizeof (int (*)())) -sizeof (int (*)())))    xian ran ,(int (*)() *) shi wu yi yi de 。    jie jue zhe ge wen ti de ban fa shi jiang han shu zhi zhen yong typedef ding yi cheng yi ge du li de shu ju lei xing , li ru :   typedef int (*funcptr)();    zhe shi hou zai tiao yong va_arg(argp, funcptr) jiang bei kuo zhan wei :   (* (funcptr *)(((argp) += sizeof (funcptr)) - sizeof (funcptr)))    zhe yang jiu ke yi tong guo bian yi jian cha le 。    wen ti : ke bian chang shen shu de huo qu    you zhe yang yi ge ju you ke bian chang shen shu de han shu , qi zhong you xia lie dai ma yong lai huo qu lei xing wei float de shi shen :   va_arg (argp, float);    zhe yang zuo ke yi ma ?    da an yu fen xi :    bu ke yi 。 zai ke bian chang shen shu zhong , ying yong de shi " jia kuan " yuan ze 。 ye jiu shi float lei xing bei kuo zhan cheng double;char, short bei kuo zhan cheng int。 yin ci , jia ru ni yao qu ke bian chang shen shu lie biao zhong yuan lai wei float lei xing de shen shu , xu yao yong va_arg(argp, double)。 dui char he short lei xing de ze yong va_arg(argp, int)。    wen ti : ding yi ke bian chang shen shu de yi ge xian zhi    wei shen me wo de bian yi qi bu da ying wo ding yi ru xia de han shu , ye jiu shi ke bian chang shen shu , dan shi mei you ren he de gu ding shen shu ?   int f (...)   {   ...   }    da an yu fen xi :    bu ke yi 。 zhe shi ANSI C suo yao qiu de , ni zhi shao de ding yi yi ge gu ding shen shu 。    zhe ge shen shu jiang bei chuan di gei va_start(), ran hou yong va_arg() he va_end() lai que ding suo you shi ji tiao yong shi ke bian chang shen shu de lei xing he zhi 。 [url=http://www.wangchao.net.cn/bbs/pydetail_1785403.html][img]http://image.wangchao.net.cn/it/1323423569863.gif[/img][/url] geng duo nei rong qing kan C/C++ jin jie ji shu wen dang zhuan ti , huo
󰈣󰈤
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
时尚秀气模特裴裴(8)
时尚秀气模特裴裴(7)
时尚秀气模特裴裴(6)
时尚秀气模特裴裴(5)
白墙黑瓦
广州东郊[原创]
八美至丹巴的东谷天然盆景
不一样的
 
>>返回首页<<
 
 
 为你推荐
 
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 热帖排行
 
 
 
 
 
©2005- 王朝网络 版权所有