Chinaunix首页 | 论坛 | 博客
  • 博客访问: 160846
  • 博文数量: 42
  • 博客积分: 996
  • 博客等级: 准尉
  • 技术积分: 705
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-09 19:41
文章分类
文章存档

2012年(42)

我的朋友

分类: C/C++

2012-04-26 13:15:44

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

Example:

 

#include

  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

  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个成员指向的函数
阅读(1374) | 评论(0) | 转发(0) |
0

上一篇:深入理解typedef

下一篇:Linux知识点

给主人留下些什么吧!~~