经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C 语言 » 查看文章
函数指针
来源:cnblogs  作者:盾牌座UY  时间:2021/1/25 11:19:56  对本文有异议

1,明确相关概念

a,指针函数:一个函数,只是返回值是一个指针,eg: int *add(int a ,int b)

b,函数名就是整个函数里面代码的首地址

int add(int a,int b)

{

  printf("%d\n",a);

  print("%d\n",b);

  return a + b;

}

add 函数名就是整个函数add的首地址,就是三条语句的首地址,等于printf("%d\n",a);的首地址

2,函数指针概念:本质是一种程序员自己定义的数据类型(跟int,结构体数据类型一样),它保存着一个函数的地址

3,函数指针数据类型声明的语法:(不会分配内存,大型程序写于头文件)

  语法: 返回值数据类型(*函数指针名)(形参表)

  eg:int (*pfunc)(int a,int b);//pfunc就是一种数据类型,当成int类型来用

  or eg:typedef int (*pfunc_t)(int a,int b);//对函数指针取别名pfunc_t(建议方法)

4,函数指针变量定义语法格式:函数指针名 函数指针变量;

  eg:pfunc_t pfunc;//pfunc就是一个函数指针变量,将来保存函数地址

5,函数指针变量初始化

  pfunc_t pfunc = add;//定义、初始化函数指针变量,指向add

6,通过函数指针变量来访问指向的函数,通过函数指针变量调用指向的函数

  语法:函数指针变量名(实参表);

 //实例:

#includ<stdio.h>

typedef (*pfunc_t)(int a,int b);

int add(int a,int b)//定义加法函数

{

  return a + b;

}

int sub(int a,int b)//定义减法函数

{

  return a -b;

}

void main(void)

{

  int ret = 0;

  pfunc_t pfunc = NULL;//定义函数指针变量且初始化为空

  pfunc = add;//把add函数的地址保存于函数指针变量pfunc

  ret = pfunc(100,200);调用add函数

  printf("a + b = %d\n",ret);

  func = sub;///把sub函数的地址保存于函数指针变量pfunc

  ret = pfunc(100,200);//调用sub函数

  printf("a + b = %d\n",ret);

}

原文链接:http://www.cnblogs.com/xiang123/p/14300750.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号