- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
三内联函数inlinefunction四引用和数值传递方式具体
三、内联函数(inline function) 四、引用和数值传递方式具体比较 三、内联函数(inline function) C++(C99)新增的关键字inline修饰的函数称为内联函 数。内联函数的语法格式与普通函数一样,只是在函数原型 或函数定义的标题头之前加上关键字inline。格式为: inline type function (type1 parm1, type1 parm2,... typen parmn){语句序列;} 关键字inline 通知编译器用内联函数体中的函数代码在 虚实结合的时候取代函数调用,调用一次就替换一次。这种 替换经过参量之间类型匹配合适性的检查。 内联函数虚实结合处发生的替换称为内联展开,内联展 开的结果是程序代码的扩大但执行的时间减少从而效率趋 快。 关键字inline是对编译器的优化建议,通常只是对于短 小的函数才执行了实际的函数体代码替换。 内联函数力图减少函数调用的堆栈空间之间的调转损 耗。递归函数、可变参量的函数以及涉及到复杂指针运算的 函数难以内联展开。 编译器对于inline展开采取复杂的指标,一旦满足这些 指标,真实的扩展在函数的调用点进行。为便于内联函数的 真实展开,inline函数的定义一般应放置在调用点之前。 C++引入inline函数的原因一是破除private或protected 关键字导致的封装弊端,二是减少宏展开的副作用。宏展开 是由#define预处理指令引入的代码重用的机制。 [例] swap函数仅交换函数 [例] 内层块交换内层局部 局部变量的值 变量的值 #include stdio.h #include stdio.h inline void swap (int x,int y) void main (void) { int t=x; x=y; y=t; { int a=1,b=2; printf (%d,%d;,x,y); } { int x=a; int y =b; void main (void) int t=x; x=y; y=t; { int a=1,b=2; printf (%d,%d;,x,y);} swap (a,b); // 内层块是swap(a,b)的内联展开 printf (%d,%d\n,a,b); } printf (%d,%d\n,a,b); } 输出结果都为2,1;1,2,可见函数体中形参的变化不影响 实参变量。 下面两个程序中的swap函数交换间接变量的值都输出 1,2 2,1 [例] 指针的数值形参交换间接变量 #include stdio.h inline void swap (int *x,int *y) { printf (%d,%d,*x,*y); int t=*x; *x=*y;*y=t; } void main (void) { int a=1,b=2; swap (a,b); printf (%d,%d\,a,b); } [例] 内层块交换间接变量的值 #include stdio.h void main(void)// 左边代码的内联展开 { int a=1,b=2; { int *y =b; int* x=a; printf (%d,%d ,*x,*y); int t=*x; *x=*y; *y=t; } //内层块是swap(a,b)的内联展开 printf (%d,%d,a,b); } 考虑到*(Lvalue)= Lvalue,上面程序的swap函数调
您可能关注的文档
最近下载
- 5-2《高尔基(选文)》高中语文.pptx
- 5 对韵歌【第一课时】 课件.pptx
- 茶马古道云南段民歌的音乐特征分析——以声乐作品《赶马调》为例.pdf
- “非遗”之首——昆曲经典艺术欣赏智慧树知到期末考试答案章节答案2024年北京大学.docx
- 高科技与我们的生活 主题班会PPT课件.pptx VIP
- 《共工怒触不周山》课本剧剧本:揭开上古神话的神秘面纱(6篇).docx VIP
- 科技筑梦,创想未来班会课件.pptx VIP
- 四年级数学下册《5.1 路程问题(1)》精美PPT优质公开课件(北京课改版).pptx VIP
- 冀少版(2024)七年级上册生物期末学业质量测试卷(含答案).docx
- 上海市2024届闵行区中考物理一模 .pdf VIP
文档评论(0)