详述C++内置函数


    调用函数时需要一定的时间和空间的开销。函数调用过程如下:

1.程序先执行函数调用之前的语句;

2.调用函数,流程控制转移到被调用函数的入口处,同时进行参数传递;

3.执行被调用函数中函数体的语句;

4.流程返回调用函数的下一条指令处,将函数返回值带回;

5.接着执行主调函数中未执行的语句。

    这样就要求在转到被调用函数之前,需要动态分配内存(动态存储区),记下当时执行的指令地址,还要“保护现场”(记下当时有关信息),以便在函数调用之后继续执行。函数调用之后,流程返回到当前记下的地址,并且根据记下的信息进行“恢复现场”,然后继续执行,这都需要花费一定时间。如果有的函数需要频繁调用,则所用时间会很长,从而降低程序执行效率。有些程序对效率是有要求的,要求系统的响应时间短,这就希望尽量压缩时间的开销。

   C++提供一种提高效率的方法,即在编译时将所调用函数的代码直接嵌入到主调函数中,而不是将流程转出去。这种嵌入到主调函数中的函数称为内置函数(内联函数)。

    定义方法:只需在函数左边加一个关键字inline即可。

例如:inline int max(int, int, int )

    注意:可以在声明函数和定义函数时同时使用inline,也可以在其中一处声明inline,效果相同,都能按内置函数处理。

     说明:使用内置函数可以节省运行时间,但是却增加了目标程序的长度。因此,一般只将规模很小而使用频繁的函数(如定时采集数据的函数)声明为内置函数。在函数规模很小情况下,函数调用的时间开销可能相当于甚至超过执行函数本身的时间,把它定义为内置函数,可大大减少程序运行时间。

说明:对函数作inline声明,只是程序设计者对编译系统提出的一个建议,也就是说它是建议性的,而非指令性的。编译系统会根据具体情况决定是否这样做。

禁忌:内置函数中不能包括复杂的控制语句,如循环语句、switch语句。

inline int max(int, int, int);//声明内置函数,左端inline

int main()

{

    int i = 3, j = 5, k =8, m;

    m = max(i, j, k);/*max函数体的代码替换  m = max(i, j, k),同时形参代替实参

                      m = max(i, j, k)被替换为

                           if(j>i); i=j

                           if(k>i); i=k

                            m=i;*/

    cout << "max=" << m = endl;

    return 0;

}

 

inline int max(int a, int b, int c);//定义max为内置函数

{

    if (b > a)

        a = b;

    if (c > a)

        a = c;

    return a;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值