指针函数与函数指针数组

“指针函数”是指返回值是指针的函数。

Example:

#include<iostream>

  using namespace std;

  void main()

  {

  float *find(float(*pionter)[4],int n); /* 函数声明 */

  static float score[][4]={{60,70,80,90},{56,89,34,45},{34,23,56,45}};

  float *p;

  int i,m;

  cout<<"Enter the number to be found:";

  cin>>m;

  p=find(score,m);

  for(i=0;i<4;i++)

  cout<<" "<<*(p+i);

  }


  float *find(float(*pionter)[4],int n)/*定义指针函数*/

  {

  float *pt;

  pt=*(pionter+n);

return(pt);

}

============================================================

“函数指针数组”首先它是个数组,不过数组的元素是函数指针。“函数指针”是指向函数的指针变量。

Example:

 #include <stdio.h>

  int add1(int a1,int b1); /*函数声明*/

  int add2(int a2,int b2); /*函数声明*/

  void main()

  {

  int numa1=1,numb1=2;

  int numa2=2,numb2=3;

  int (*op[2])(int a,int b);

  op[0]=add1;

  op[1]=add2;

  printf("%d %d\n",op[0](numa1,numb1),op[1](numa2,numb2));

  }


  int add1(int a1,int b1)

  {

  return a1+b1;

  }


  int add2(int a2,int b2)

  {

  return a2+b2;

  }

======================================================

为函数指针数组赋值:

为函数指针数组赋值有两种方式:静态定义和动态赋值。

  1. 静态定义

  在定义函数指针数组的时候,已经确定了每个成员所对应的函数。例如:

  void (*INTARRAY[])(void) = {Stop,Run,Jump};

  从根本上讲函数指针数组依然是数组,所以和数组的定义类似,由于是静态赋值,[ ]里面的数字可以

  省略。这个函数指针数组的成员有三个。

  INTARRAY[1](); //执行Run函数

  2. 动态赋值

  也可以先定义一个函数指针数组,在需要的时候为其赋值。为了还原它本来的面目,我们先对这个执行特定类型的函数指针进行类型重定义,然后再用这个新数据类型来定义数组。如下:

  typedef void (*INTFUN)(void); //此类型的函数指针指向的是无参、无返回值的函数。

  INTFUN INTARRAY[32]; //定义一个函数指针数组,其每个成员为INTFUN类型的函数指针

  INTARRAY[10] = INT_TIMER0; //为其赋值

  INTARRAY[10](); //调用函数指针数组的第10个成员指向的函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值