指针函数和函数指针对比

函数指针:

(指向函数的指针):其本质上是一个指针,指向函数的内存地址,示例如下:

int (*f) (int x); /* 声明一个函数指针 */

f=func; /* func函数的首地址赋给指针f */

#include<stdio.h>

#include<stdlib.h>

int main()

{
int max(int,int);
int (*p)(int,int);
int a,b,c;
p= max;
scanf("%d,%d",&a,&b);
c = (*p)(a,b);
printf("a=%d,b=%d,max=%d\n",a,b,c);
return0;
}
int max(int x,int y)
{
int z;
if(x>y) z = x;
else z= y;
return z;

}

//

  注意:

  (1) 指向函数的指针变量的一般定义形式为:

 数据类型 (*指针变量名)(函数参数列表)

  这里数据类型就是函数返回值的类型

  (2) int (* p) ( int,int ); 它只是定义一个指向函数的指针变量 p, 它不是固定指向哪一个函数的,而只是表示定义这样一个类型的变量,它是专门用来存放函数的入口地址的。在程序中把哪一函数(该函数的值应该是整形的,且有两个整形参数)的地址赋给它,他就指向哪一个函数。在一个函数中,一个函数指针变量可以先后指向同类型的不同函数。

  (3) p = max; 在给函数指针变量赋值时,只需给出函数名而不必给出函数参数,因为是将函数的入口地址赋给 p ,而不涉及 实参和形参的结合问题,不能写成 p = max(a,b);

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / // / / / / /  / // / /  / / // / / /  / /

指针函数:

  本质上是一个函数,函数返回类型是一个指针

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

    int *f(xy);

#include<stdio.h>

#include<stdlib.h>
int *max(int m,int n);
intmain( )
{
int *p;
int a,b;
scanf("%d,%d",&a,&b);
p = max(a,b);
printf("a=%d,b=%d,max=%d\n",a,b,&p)
return 0;
}
int *max(int x,int y)
{
int *z;
if(x>y) z = x;
else z= &y;
return z; //返回的是y值得地址

}

///******************************************************************************************

 指针函数:
    
当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中。

注意指针函数与函数指针表示方法的不同,千万不要混淆。最简单的辨别方式就是看函数名前面的指针*号有没有被括号()包含,如果被包含就是函数指针,反之则是指针函数。


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值