函数指针和指针函数

指针和函数之间的关系主要包括三个方面的内容:

1、指针可以指向某个函数,即函数指针;

2、函数的返回值可以是指针类型的变量,即指针函数

3、指针可以作为函数的参数。

 

指针函数:指向函数的指针

1、为指向函数的指针赋值

函数名是指针常量,其值为该函数在内存中存储区域的首地址。智能将函数的首地址赋值到

指向同类型函数的指针。
函数指针=函数名

2、调用方式: (*指针名)(实在参数列表)

用函数指针调用求最大值函数,求出a和b中的大者。函数占有一段内存单元,可用函数指针变量指向其首地址,通过指针变量来访问它所指向的函数。程序设计如下:

#include<stdio.h>

int max(int x,int y)

{

    return x>y?x:y;

}

 

void main()

{

int a,b,c;

int(*p)(int,int);                /* 声明函数指针 */

p=max;                             /* 函数名代表了函数入口地址 */

scanf("%d,%d",&a,&b);

c=(*p)(a,b);                     /* 调用方式 */

printf("a=%d,b=%d,max=%d\n",a,b,c);

}

注意

(1) int(*p)(int,int);定义p是一个指向函数的指针变量,即所指向的函数返回值为int型,形参依次为int、int类型的函数。

(2) 在int(*p)(int,int);(*p)两侧的括弧不可省略,表示p先与*结合,是指针变量,然后再与后面的(  )结合,表示此函数指针变量所指向的函数返回值是整型。如果写成“int *p(int,int)”,则由于( )优先级高于*,它表示声明了一个函数,只不过这个函数的返回值是指向整型变量的指针。

(3)给函数指针变量赋值时只赋函数名,不准带参数。

如:p=max;

赋值语句“p=max;”的作用是将函数max的入口地址赋给指针变量p。和数组名代表数组的起始地址一样,函数名代表函数的入口地址。 

函数调用可以通过函数名,也可通过函数指针,本例中的调用形式为c=(*p)(a,b);用函数指针调用的参数与函数调用的参数完全一致,用函数指针变量调用函数时,只需将(*p)代替函数名即可。

(4)    对指向函数的指针变量不准作加减运算,如:p++,p--,p+n都是错误的。

 

返回值为指针的函数--指针函数

返回值为指针的函数与函数的概念是一样的,只是返回值的类型值指针类型而已,此类函数通常称为指针函数。

 

指针函数定义形式:

类型名  *函数名(形参表定义)

{

    函数体

}

 

函数指针和指针函数的比较

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值