加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 钦州站长网 (https://www.0777zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php 如何定义一个函数指针,C中如何声明指向函数的指针?

发布时间:2022-10-20 11:17:47 所属栏目:PHP教程 来源:
导读:  首先我们了解一下如何在C中创建一个指向整数的指针?int * ptrInteger; / *我们在int和ptrInteger之间放置了一个*运算符来创建指针。* /

  这里的ptrInteger就是一个指向整数的指针。如果可以理解这一点,
  首先我们了解一下如何在C中创建一个指向整数的指针?int * ptrInteger; / *我们在int和ptrInteger之间放置了一个*运算符来创建指针。* /
 
  这里的ptrInteger就是一个指向整数的指针。如果可以理解这一点,那么从逻辑上讲,我们在声明指向函数的指针时应该没有任何问题了。
 
  接下来让我们来看看如何声明一个函数?例如:int foo(int);
 
  这里的foo就是一个返回并接受一个int类型参数的函数。因此,逻辑上会被认为,只要在int和foo(int)之间放置一个*运算符就应该创建一个指向函数的指针,即:int * foo(int);
 
  但,这是不对的;因为,c运算符优先级在这里也起作用,运算符()将优先于运算符*。上面的声明意味着:一个函数foophp指针,其中一个参数为int类型,返回值为int *即整数指针;这不是我们想要的,所以我们还需要考虑c运算符优先级。
 
  因此,我们必须以某种方式将*运算符与foo绑定。为此,我们将使用()运算符来更改C运算符的默认优先级。例:int (*foo)(int);
 
  *运算符与foo一起使用,而foo是函数名,这样就声明来一个指向函数的指针了。
 
  函数指针的使用示例:#include
 
  // 具有int参数和void返回类型的普通函数
 
  void fun(int a)
 
  {
 
  printf("a值为: %d\n", a);
 
  }
 
  int main()
 
  {
 
  // fun_ptr 是指向函数fun()的指针
 
  void (*fun_ptr)(int) = &fun;
 
  /* 相当于下面两行
 
  void (*fun_ptr)(int);
 
  fun_ptr = &fun;
 
  */
 
  //使用fun_ptr调用fun()
 
  (*fun_ptr)(10);
 
  return 0;
 
  }
 
  说明:
 
  1、与普通指针不同,函数指针指向代码,而不是数据。通常,函数指针存储可执行代码的开始。
 
  2、与普通指针不同,我们不使用函数指针分配解除分配内存。
 
  3、在函数指针中,函数的名称也可用于获取函数的地址。
 
  4、与普通数据指针一样,函数指针可以作为参数传递,也可以从函数返回。
 
  以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!
 

(编辑:PHP编程网 - 钦州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!