C++笔记——指针函数/函数指针

两者主要区别,一个是函数(指针函数),一个是指针变量(函数指针)。

指针函数

(1)定义
指针函数:顾名思义就是带有指针的函数,即其本质是一个函数,只不过这种函数返回的是一个对应类型的地址。
(2) 定义式
type *func (type , type)
如:int *max(int x, int y)
首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量。
(3)演示代码

    #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];  //返回一个地址  
    }  

子函数返回的是数组中某一元素所在的地址值,输出的是这一地址中存储的数。

函数指针

(1)定义
函数指针:指向函数的指针变量,本质上是一个指针变量
(2) 定义式
type (*func)(type , type )
如:int (*max)(int a, int b)
这个特殊的指针指向一个返回整型值的函数。指针的声明必须和它指向函数的声明保持一致。指针名和指针运算符外面的括号改变了默认的运算符优先级。如果没有圆括号,就变成了一个返回整型指针的函数的原型声明。

    #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;  //或者 func=&max; 将max函数的首地址赋给指针func
        int a,b;  
        cout<<"Please enter two numbers:";  
        cin>>a>>b;  
        int result=(*func)(a,b);    //运用指针变量调用函数  
        cout<<"max="<<result<<endl;  
    }  

参考:
http://blog.csdn.net/aigoleague/article/details/8622665
http://blog.csdn.net/u014131641/article/details/51104808

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值