上海网站设计公司电话,网站服务器和网站备案,企业如何创建网站,wap建站模板函数是一个可以重复使用的代码块#xff0c;CPU 会一条一条地挨着执行其中的代码。CPU 在执行主调函数代码时如果遇到了被调函数#xff0c;主调函数就会暂停#xff0c;CPU 转而执行被调函数的代码#xff1b;被调函数执行完毕后再返回到主调函数#xff0c;主调函数根据…函数是一个可以重复使用的代码块CPU 会一条一条地挨着执行其中的代码。CPU 在执行主调函数代码时如果遇到了被调函数主调函数就会暂停CPU 转而执行被调函数的代码被调函数执行完毕后再返回到主调函数主调函数根据刚才的状态继续往下执行。
如果函数体代码比较多需要较长的执行时间那么函数调用机制占用的时间可以忽略如果函数只有一两条语句那么大部分的时间都会花费在函数调用机制上这种时间开销就就不容忽视。
为了消除函数调用的时空开销C 提供一种提高效率的方法即在编译时将函数调用处用函数体替换类似于C语言中的宏展开。这种在函数调用处直接嵌入函数体的函数称为内联函数Inline Function又称内嵌函数或者内置函数。
指定内联函数的方法很简单只需要在函数定义处增加 inline 关键字。请看下面的例子
#include iostream
using namespace std;//内联函数交换两个数的值
inline void swap(int *a, int *b){int temp;temp *a;*a *b;*b temp;
}int main(){int m, n;cinmn;coutm, nendl;swap(m, n);coutm, nendl;return 0;
}运行结果
42 85
85, 42
85, 42注意要在函数定义处添加 inline 关键字在函数声明处添加 inline 关键字虽然没有错但这种做法是无效的编译器会忽略函数声明处的 inline 关键字。
当编译器遇到函数调用swap(m, n)时会用 swap() 函数的代码替换swap(m, n)同时用实参代替形参。这样程序第 16 行就被置换成
int temp;
temp *(m);
*(m) *(n);
*(n) temp;编译器可能会将 (m)、(n) 分别优化为 m、n。
由于内联函数比较短小我们通常的做法是省略函数原型将整个函数定义包括函数头和函数体放在本应该提供函数原型的地方。