性能 有效充分的使用资源是提升程序性能的一个重要手段,如果一个公司注重仓储,在全国范围内,建立相应商品仓库,那就表示客户能更早的收到自己想要的产品,物资能够就近调拨,配送就能够尽快到位,但是这样有一个缺陷,就是占用资源和空间过多,在程序中,空间并不是无线和立体的,也就是说空间是有限的,不能够随便占用过多资源,不过多占用资源就意味着依赖cpu的运算速度,所以怎么样能够充分有效的使用空间和资源就成为一个程序员必须要考虑的事情
内联函数 什么是内联(inline),内联就是把相应代码镶嵌在适当位置,因为函数调用是要建立栈的,所以为了避免过多的使用栈内存,就考虑使用内联函数
#include <iostream>
#include "property.h"
using namespace std;
//------------------------------
bool ischar(char);//函数声明
//------------------------------
int main()
{
char c;
cout << "Hello world!" << endl;
cout<<"请输入一个字符,不能输入回车符或者或者换行符"<<endl;
while(cin>>c&&c!='\n'){
if(ischar(c))
cout<<"字符输入正确"<<endl;
else
cout<<"字符输入过小"<<endl;
}
/**
int x[1000],y[1000],z[1000];
for(int i=0;i<1000;i++)
for(int j=0;j<1000;j++)
for(int k=0;k<1000;k++)
z[i]=countnumber1(j,k);
*/
while(1);
return 0;
}
bool ischar(char ch){
return ch>'0'&&ch<='9'?1:0;
}
当前的程序中是一个普通函数,不是内联函数,函数是被主函数main多次调用,所以程序的开销就大了
#include <iostream>
#include "property.h"
using namespace std;
//------------------------------
bool ischar(char);//函数声明 无内联
//------------------------------
int main()
{
char c;
cout << "Hello world!" << endl;
cout<<"请输入一个字符,不能输入回车符或者或者换行符"<<endl;
while(cin>>c&&c!='\n'){
if(ischar(c))
cout<<"字符输入正确"<<endl;
else
cout<<"字符输入过小"<<endl;
}
/**
int x[1000],y[1000],z[1000];
for(int i=0;i<1000;i++)
for(int j=0;j<1000;j++)
for(int k=0;k<1000;k++)
z[i]=countnumber1(j,k);
*/
while(1);
return 0;
}
inline bool ischar(char ch){ //此处内联
return ch>'0'&&ch<='9'?1:0;
}
对函数声明必须在调用之前,因为在内联函数在执行是在镶嵌在调用处执行的,调用处并没有把内联函数作为一个函数来使用,只是把内联函数函数体代码镶嵌在调用处执行的,当前函数声明并无内联,而在函数实现处才标识该函数为内联函数,所以当前的函数只是作为一个普通函数使用,正确的方式应该是这样的
#include <iostream>
#include "property.h"
using namespace std;
//------------------------------
inline bool ischar(char);//函数声明 无内联
//------------------------------
int main()
{
char c;
cout << "Hello world!" << endl;
cout<<"请输入一个字符,不能输入回车符或者或者换行符"<<endl;
while(cin>>c&&c!='\n'){
if(ischar(c))
cout<<"字符输入正确"<<endl;
else
cout<<"字符输入过小"<<endl;
}
/**
int x[1000],y[1000],z[1000];
for(int i=0;i<1000;i++)
for(int j=0;j<1000;j++)
for(int k=0;k<1000;k++)
z[i]=countnumber1(j,k);
*/
while(1);
return 0;
}
bool ischar(char ch){
return ch>'0'&&ch<='9'?1:0;
}
内联函数使用场合
函数体小,这样嵌入工作容易进行,不会破坏原调用主体
程序调用特别是反复调用,这样使嵌入的效率更高
程序并不多处调用,这样嵌入工作量相对较少,代码量也不会剧增