《程序员面试宝典》C/C++函数指针和指针函数

4.8.2函数指针和指针函数
(1)指针函数
即是带指针的函数,本质上是函数,返回类型是指针。形式:类型说明符 *函数名(形参表),下例中,指针函数的返回值是一个地址,使用的时候是*GetNum(num)。

    #include <iostream>  
    using namespace std;  
    int *GetNum(int x); //指针函数声明形式  
    void main(void)  
    {  
        cout<<"===============start================"<<endl;  
        int num;  
        cout<<"Please enter the number between 0 and 6: ";  
        cin>>num;  
        cout<<"result is:"<<*GetNum(num)<<endl;    //输出返回地址块中的值  
    }  

    int *GetNum(int x) {  
        static int num[]={0,1,2,3,4,5,6};  
        return &num[x];  //返回一个地址  
    }  

(2)函数指针
即是指向函数的指针变量,本身是一个指针变量,表示一个指针,其指向一个函数。形式:类型类型说明符 (*指针变量名)(形参表),下例中直接将函数名赋值给指针变量名。

    #include <iostream>  
    using namespace std;  
    int max(int a, int b) {  
        return a>b?a:b;  
    }  
    void main(void)  
    {  
        cout<<"===========start==========="<<endl;  
        int (*func)(int,int);       //定义一个指向该函数形式的指针变量  
        func=max;  
        int a,b;  
        cout<<"Please enter two numbers:";  
        cin>>a>>b;  
        int result=(*func)(a,b);//运用指针变量调用函数,也可写成func(a,b)  
        cout<<"max="<<result<<endl;  
    } 

重点(借鉴别人):两者主要区别,一个是函数(指针函数),一个是指针变量(函数指针),当你真正理解这句话的时候就可以完全理解两者的区别啦。

猜你喜欢

转载自blog.csdn.net/wangshuailpp/article/details/79970163