指针与函数

来源:互联网 发布: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*num;    return p;}int main(){    int num;    cin>>num;//输入3    cout<<(*fun(num))<<endl;//输出27}
0 0
原创粉丝点击