当前位置: 首页 > news >正文

从头开始学C语言第三十六天——函数指针和函数指针数组

函数指针

函数指针用来存放函数地址,这个地址就是一个函数的入口

函数名代表函数的入口地址

一般形式:

<数据类型> (*<函数指针名称>) (<参数说明列表>);

int *power (int a);

数据类型是函数指针所指函数的返回值类型

参数说明列表应该与函数指针所指函数形参保持一致

函数指针名称中,*说明是指针不可缺少的,意为函数指针

#include <stdio.h>

int add(int,int);

int main()
{
    int a=1;
    int b=2;

    int (*p) (int,int);

    p=add;

    printf("result = %d\n",add(a,b));
    printf("result = %d\n",(*p)(a,b));

    return 0;
}

int add(int a,int b)
{
    return a+b;
}

运行程序会发现,函数指针本质上跟前面学的指针没什么区别,只是所指对象的区别。定义了一个函数指针,并指向add这个函数的地址,在输出结果时,既可以通过函数add,也可以通过指针*p。当主函数内部大量调用函数,可以通过指针的方式简化程序。

函数指针数组

函数指针数组和之前的指针数组类似。指针数组是存放指针的数组,函数指针数组是存放函数指针的数组。

一般形式:
<数据类型> (*<函数指针数组名>) (<大小>) (<参数说明列表>)

大小:函数指针数组元素个数。其余部分与普通函数指针一样。

#include <stdio.h>

int add(int ,int);
int sub(int,int);

int main()
{
    int a=3;
    int b=1;

    int (*p[2])(int,int);

    p[0]=add;
    p[1]=sub;

    printf("result=%d\n",add(a,b));
    printf("result=%d\n",(*p[0])(a,b));
    printf("result=%d\n",(*p[1])(a,b));

    return 0;
}

int add(int a,int b)
{
    return a+b;
}

int sub(int a,int b)
{
    return a-b;
}

 

 

相关文章:

  • 【C/C++算法】从浅到深学习---分治算法之快排思想(图文兼备 + 源码详解)
  • Html 页面图标的展示列表
  • 本地文件夹同步软件,本地文件夹同步备份方法
  • MYSQL数据库(一)
  • 六十天前端强化训练之第三十六天之E2E测试(Cypress)大师级完整指南
  • doip诊断第二版优化
  • [GWCTF 2019]我有一个数据库1 [CVE phpMyAdmin漏洞]
  • Android并发编程:线程池与协程的核心区别与最佳实践指南
  • Java线程特性
  • 1.1 斐波那契数列模型:LeetCode 1137.第 N 个泰波那契数
  • sqli-labs靶场 less 12
  • python笔记之函数
  • 时序数据库:InfluxDB命令行操作
  • 机械波的产生与传播
  • 鸿蒙学习手册(HarmonyOSNext_API16)_应用开发UI设计:相对布局
  • Redis常用的数据结构及其使用场景
  • 机器学习之回归算法
  • Verilog中X态的危险:仿真漏掉的bug
  • 【初阶数据结构】栈
  • 七年级角的概念
  • 一键网站制作app/seo优化评论
  • .net做网站用什么的多/网络营销员岗位的职责与要求
  • 注册安全工程师建设工程网站/衡阳网站建设
  • 织梦网站建设教程/福建百度推广
  • 小区网站建设/百度电脑版网址
  • 美国白宫网站开发/绍兴seo排名收费