指针与函数
来源:互联网 发布:linux中apache配置 编辑:程序博客网 时间:2024/06/05 18:38
1.指针作为函数参数
当指针作为函数的参数时,相当于传入变量的地址,在函数中对指针所指的值进行修改,就是对变量本身进行的修改。
下面的例子是计算一个数的立方。
#include <iostream>using namespace std;int fun(int *pre){ *pre=*pre**pre**pre; return *pre;}int main(){ int num; cin>>num; //输入3 cout<<fun(&num)<<endl;//输出27 cout<<num<<endl;//输出27 return 0;}
可以发现变量本身num发生了变化。
2.函数指针
形式:函数类型 (*指针变量名)(形参列表);
作用:通过指针来调用函数
例子:
//(*p)调用函数#include<iostream>using namespace std;int max(int x,int y){ int z; if(x>y) { z=x; } else { z=y; } return z;}int main(){ int (*p) (int,int); p=max; //把函数的接口地址赋给指针,指针p里面存的是函数地址的地址 int a,b,c,m; cout<<"Please input three integers:"<<endl; cin>>a>>b>>c; m=(*p)((*p)(a,b),c);//星花p找到的是函数的地址,也就是函数的入口。 cout<<"Max="<<m<<endl; return 0;}
//指针p直接调用也可以,因为其实函数名就是函数的接口地址#include<iostream>using namespace std;int main(){ int max(int x,int y); int (*p) (int x,int y); p=max; int a,b,c,m; cout<<"Please input three integers:"<<endl; cin>>a>>b>>c; m=p(p(a,b),c); //这时指针里面存的就是函数接口地址 cout<<"Max="<<m<<endl; return 0;}int max(int x,int y){ int z; if(x>y){ z=x; } else{ z=y; } return z;}
用指向函数的指针作为函数的参数
函数指针变量最常见的用途之一是作为函数的参数,将函数名传递给其他函数的形参。这样那个就可以在调用一个函数的过程中,根据给定的不同的实参,调用不同的函数。
例如,利用该方法解决,两个函数y1=(x+1)^1; y2=(2x+3)^2 ; y3=(x^2+1)^3
分析:编写3个函数f1,f2,f3,用来求上面3个函数x+1,2x+3,x^2+1的值。
然后编写一个通用函数Squar,他有两个形参:a次方和指向函数、
程序代码:
#include<iostream>#include<math.h>using namespace std;double fun1(double n){ double r; r=n+1; return r;}double fun2(double n){ double r; r=2*n+3; return r;}double fun3(double n){ double r; r=(pow(n,2)+1); return r;}double Squar(int a, double x, double(*p)(double )){ double r,z; z=(*p)(x); r=pow(z,a); return r;}int main(){ double fun1(double n); double fun2(double n); double fun3(double n); double Squar(int a, double x, double(*p)(double )); double x; cout<<"Please input x:"; cin>>x; cout<<"(x+1)^1="; cout<<Squar(1,x,fun1)<<endl; cout<<"(2x+3)^2="; cout<<Squar(2,x,fun2)<<endl; cout<<"(x^2+1)^3="; cout<<Squar(3,x,fun3)<<endl; cout<<endl; return 0; }
3.指针函数
形式:函数类型 * 函数名( 参数列表)
作用:用来返回一个指针类型的变量
例子:
#include <iostream>using namespace std;int *fun(int num){ int *p; p=# num=num*num*num; return p;}int main(){ int num; cin>>num;//输入3 cout<<(*fun(num))<<endl;//输出27}
0 0
- 指针函数与函数指针
- 指针函数与函数指针
- 函数指针与指针函数
- 指针函数与函数指针
- 函数指针与指针函数
- 函数指针与指针函数
- 函数指针与指针函数
- 函数指针与指针函数
- 函数指针 与 指针函数
- 函数指针与指针函数
- 函数指针与指针函数
- 函数指针与指针函数
- 函数指针与指针函数
- 函数指针与指针函数
- 函数指针与指针函数
- 函数指针与指针函数
- 函数指针与指针函数
- 指针函数与函数指针
- c++项目试验(一)——求两数的和与差
- gradle学习系列
- 按下HOME键后从悬浮层启动Activity慢
- 微观经济学--第6章 供给、需求与政府政策
- iOS--CFMessagePort实现进程间通信
- 指针与函数
- 作业1
- js 与或运算符 || && 妙用
- d3系列2--api攻坚战03
- 关于电源锁:android之WakeLock机制浅析
- 给树莓派加上wifi模块 8266
- tomcat与jdk整合,免安装
- linux 网络域名ip查询命令
- C++第一次上机报告