CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛

c++内置函数和内联函数(燃爆了)在c++中,编写一个内联函数,C++中宏与内联函数,

1.c++中的内联函数

1宏定义

2.在c++语言中引入内联函数的主要目的是降低

C++是C的超集,C++继承了C的一个重要特性就是效率,在C中提高程序运行效率的重要手段就是宏,宏可以不用普通函数的调用但使用起来就像普通函数调用一样,宏的实现采用的是预处理器而不是编译器,所以就没有了参数调用、生成汇编语言的CALL,返回参数和执行汇编语言RETURN等时间的花费,因而大大提高了程序执行的效率。

3.C++ 内联函数

当然在C++中也可以采用这种方式提高程序执行的效率 例如: #include<iostream.h> #define doub(x) x*2 int main() { for(int i=1;i<=3; i++)

4.c++引入内联函数的原因是用它来取代c中的预处理宏函数

cout<<i<<”doubled is “<<doub(i)<<endl; cout<<”1+2doubled is “<<doub(1+2)<<endl; return 0; } 程序运行的结果为:

5.如何规范地使用C++内联函数

1 doubled 2 2 doubled 4 3 doubled 6 1+2 doubled 5 当程序运行到cout<<i<<”doubled is “<<doub(i)<<endl;和cout<<”1+2doubled is “<<doub(1+2)<<endl;时,直接将宏定义的代码在程序中直接展开,这样就省去了函数调用的开销,大大提高了程序执行的效率。

6.函数体内含有循环语句时,不适合定义为内联函数

2内联函数 在C++中,函数说明之前,冠以关键字”inline”,该函数就被声明为内联函数它和宏定义有着相同的作用和相似的机理,在内联函数被调用时,C++的编译器使用函数体中的代码替代函数调用表达式,这样就较少的函数调用的开销,加快的了程序的执行。

7.一般情况下,将什么函数说明为内联函数

例如: #include<iostream.h> inline float circle(float r) {return 3.1416*r*r;} int main(){ for(int i=1;i<=3;i++)

8.下列程序段中是内联函数的是

cout<<”r=”<<i<<” area=”<<circle(i)<<endl; return 0; } 程序运行的结果为: r=1 area=3.1416 r=2 area=12.5664 r=3 area=28.2744

9.c++中内联函数的作用

当程序运行到cout<<”r=”<<i<<” area=”<<circle(i)<<endl;时直接将定义的内联函数在程序展开,减少了普通函数调用的开销,提高了程序执行的效率,这一点和宏定义非常相似,但是两者又不完全相同,而且有着非常重要的区别。

10.c++引入内联函数的原因

3两者之间的区别 对于上面的第二道例题采用内联函数和宏定义,所得的程序运行的结果应该是相同的,那么它们之间的区别在哪里呢?我们再来研究一下上面的第一道例题虽然宏定义在外观和行为上与函数调用一样,但是当微妙的差异出现时,问题就出现了。

例如对于第一道例题,该程序所定义的宏是完成乘2的功能,那么分析程序运行的结果,可以看出前三个结果是正确的,但是第四个结果与期望的值由区别,我们期望的结果应该是6,而实际运行的结果却是5,问题的原因是编译程序将输出语句cout<<”1+2doubled is “<<doub(1+2)<<endl;解释为cout<<”1+2doubled is “<<1+2*2<<endl;,它改变了原先我们所期望的运算符的优先级的次序,所以所得的结果也不是我们事先所期望的,程序执行的结果为5。

由这个例子可以看出宏定义本身存在着一定的不安全性,有时会隐藏难以发现的错误相反,如果这个例子采用内联函数来完成的话,实验证明,程序运行的结果为: 1 doubled 2 2 doubled 4 3 doubled 6

1+2 doubled 6 通过这个例子,我们可以看出内联函数和宏定义之间的区别,内联函数消除了宏定义存在着的潜在的不安全 性,因此,大多数程序员在编写程序的时候,很少采用宏定义 4结论 下面我们研究一下造成这种区别的根本原因,宏定义的实现是通过预处理器,而内联函数的实现是通过编译器,正是这样的差别造成了以上程序运行结果的不同。

宏定义存在的关键问题是我们可能认为预处理器的行为和编译器的行为一样,因此在使用过程中容易被混淆 最后,学习从来不是一个人的事情,要有个相互监督的伙伴,对于C/C++感兴趣可以搜素千人群:C/C++学习编程13群(jack建立)有兴趣交流或者了解一下的可以进来交流,另外进群就可以领取相关的学习资料哦

【参考文献】 [1]王菊英. 当前我国利率走势探究[J]. 经济师 , 2003,(05) [2]刘繁荣.建设学习型企业之管见[J]现代管理科学 , 2004,(04) [3] 任美姣. 浅谈合作探究教学模式[J]. 浙江工商职业技术学院学报 , 2003,(02)

[4]齐善鸿. 分合的逻辑与趋势–对企业两权分合的研究与思考[J]. 理论与现代化 , 1999,(01) [5]杨则正. Symantec公司的C++8.0编译器[J]. 管理科学文摘 , 1998,(11)

[6]杨凡. 浅析C++中内联函数与宏的区别[J]. 科技咨询导报 , 2007,(01) [7]郑冉冉. 企业营销道德问题探究[J]. 江苏商论 , 2005,(07) [8]付昱纲. 网络名人:C++之父――Stroustrup[J]. 教育与职业 , 2003,(18)

[9]杨勇. 我国独立董事职业化道路的探究[J]. 经济前沿 , 2005,(06) [10]陈永强. 《电子商务概论》课程大纲探究[J]. 杭州师范学院学报(医学版) , 2005, [11]]《c + + 语言和面向对象程序设计教程》 陈维兴 林小茶 编著 清华大学出版社 2000. 1

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
相关推荐
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容