函数
来源:互联网 发布:直销矩阵制示意图 编辑:程序博客网 时间:2024/05/21 04:20
返回指针类型:
#include<iostream>const int MAXN=1000+10;using namespace std;int *maxPoint(int *x, int *y){if(*x > *y) return x;return y;}int main(){int a=9,b=4;cout<<*maxPoint(&a,&b)<<endl;;return 0;}/*maxPoint()返回对象的指针,不需要复制产生实际对象的值。如果函数需要对大对象进行操作,使用函数指针显然可以节省匿名对象生成的时空消耗*///注意,指针函数不能返回局部变量的指针。如下定义是错误的:int *f(){int tmp;//...return &tmp;}//tmp是在函数f运行时建立的临时对象,f运行结束,系统释放tmp,因此,函数返回局部变量的地址是不合理的
返回引用类型:
#include<iostream>const int MAXN=1000+10;using namespace std;int &maxRef(int &x, int &y){if(x > y) return x;return y;}int main(){int a=9,b=4;cout<<maxRef(a,b)<<endl;;return 0;}/*因为函数返回类型是整型引用,所以,C++无需建立返回用的匿名对象,函数调用的返回就是对象的引用。在上述运行实例中,函数返回变量名y,而y是b的引用,所以,在main函数的调用返回时b的引用。*///函数返回需要依托于一个对象。以下定义是错误的int &f(){int tmp;//...return &tmp;}
函数指针:
1:函数类型:
typedef 类型 函数类型名(形式参数表)
如:
typedef double function(double, double);
之后可以
function max,min;
2:函数指针:
定义指向一类函数的指针变量:
例:double (*fp)(double,double);
或:function *fp;
还可以用关键字typedef定义指针类型:
例:typedef double(*p)(double,double);
或:typedef function *p;
之后可以:
p p1,p2;
调用函数:
fp=max //获取max函数地址
x=fp(0.5, 6.7) ;
或:x=(*fp)(0.5, 6.7);
以函数作参数:
#include<algorithm>#include<cmath>#include<iostream>const int MAXN=1000+10;using namespace std;typedef double fType(double);double func(fType *f, double l, double u){double d,s=0.0;for(d=l; d<=u; d+=0.1){s+=f(d);}return s;}int main(){double sum;sum=func(sin, 0.0, 1.0);//以库函数作为参数cout<<sum<<endl;sum=func(cos, 0.0, 1.0);cout<<sum<<endl;return 0;}
内联函数:
函数调用时,需要建立栈空间来保存调用时的现场状态和返回地址,并且进行参数传递,产生程序转移。系统完成这些工作都需要时间和空间方面的开销。因此,C++提供内联函数机制定义一些功能比较简单,代码比较短的函数。编译时,系统把内联函数的函数体嵌入到每一个函数调用处,节省了程序运行的调用开销。
定义内联函数的方法:在函数名第一次出现时,在函数名前冠以关键字inline。
0 0
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 面试题 实现memmove函数
- 安装numpy、nltk问题汇总
- wpf中datagrid 控件 隐藏表头方法
- xml功能数据格式
- 黑马程序员——java.lang.Runtime
- 函数
- 关于实现memcpy和memmove两个库函数的一点体会
- 【瞎搞】HDU 4961 Boring Sum
- Shell脚本调试技术
- 黑马程序员——集合工具类
- 使用highChart做报表统计
- ubuntu 14.04 install ibus
- life is tough!最可怕的是牛人还那么努力!
- 第十章 构建基本脚本