指针函数与函数指针的区别

1、指针函数:本质是一个函数。函数返回类型是某一类型的指针

    格式:  类型标识符    *函数名(参数表)

                   int *f(x,y);

 

1

2

3

4

5

float *fun();

 

float *p;

 

p = fun(a);

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

int* find(void);

 

int * find(){

 

     int *pp ;

      pp= 0;

    return pp;

     

}

 

int main(int argc, const char * argv[]) {

 

    int *pp ;

    pp = find();

 

    return 0;

}

 本质是函数 只是这个函数返回的是一个执行某一类型数据的指针;

 

2、函数指针是指向函数的指针变量,即本质是一个指针变量。

     格式:类型说明符 (*函数名)(参数)

                int (*f) (int x); 

    指向函数的指针包含了函数的地址,可以通过它来调用函数

   其实这里不能称为函数名,应该叫做指针的变量名。这个特殊的指针指向一个返回整型值的函数实现地址。指针的声明笔削和它指向函数的声明保持一致。

 

1

2

3

4

5

6

7

8

9

10

11

12

int  xMax(int a,int b){

    return a>b?a:b;

     

}

int main(int argc, const char * argv[]) {

 

     

    int (*xMaxValue)(int a,int b) = &xMax;// &可以省略

     

    int d = xMaxValue(xMaxValue(2,4),3);

    printf("最大的数字是: %d\n", d);

}

 

   

  指针名和指针运算符外面的括号改变了默认的运算符优先级。如果没有圆括号,就变成了一个返回整型指针的函数的原型声明。

   辨别方式就是看函数名前面的指针*号有没有被括号()包含,如果被包含就是函数指针,反之则是指针函数。

3、回调函数

函数指针作为某个函数的参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值