函数指针:函数指针数组的使用:

不带参数和返回值的函数指针:

#include <stdio.h>
#include <stdlib.h>

//定义一个没有返回值也没有入口参数的函数指针
typedef void (CONTROL_FLOW_FUNCTION)();

void Function1()
{
    printf("  This is printed by function1 !!!\n");
}
void Function2()
{
    printf("  22222222\n");
    printf("    22222222\n");
}
void Function3()
{
    printf("  This is printed by function3......\n");
}

CONTROL_FLOW_FUNCTION *ControlFlowFunctions[] = {
    Function1,
    Function2,
    Function3,
    NULL
};

char *ControlFlowFunctionNames[] = {
    "Function1",
    "Function2",
    "Function3",
    NULL
};

int main()
{
    ;
    printf("main start!\n");
    ; ControlFlowFunctions[i]!=NULL; i++){
        printf("ControlFlow.%s\n", ControlFlowFunctionNames[i]);
        ControlFlowFunctions[i]();
    }
    printf("main end!\n");
}

带参数和返回值的函数指针:

#include <stdio.h>
#include <stdlib.h>

//定义一个函数指针类型
typedef int (CONTROL_FILTER_FUNCTION)(int dat);

int Function1(int data)
{
    printf("Check if data can be exactly divisible by 2.\n");
     == )
        ;
    else
        ;
}
int Function2(int data)
{
    printf("Check if data can be exactly divisible by 3.\n");
     == )
        ;
    else
        ;
}
int Function3(int data)
{
    printf("Check if data can be exactly divisible by 5.\n");
     == )
        ;
    else
        ;
}

CONTROL_FILTER_FUNCTION *ControlFilterFunctions[] = {
    Function1,
    Function2,
    Function3,
    NULL
};

char *ControlFilterFunctionNames[] = {
    "Function1",
    "Function2",
    "Function3",
    NULL
};

int main()
{
    ;
    ;
    printf("==Check if data can be exactly divisible by 2 or 3 or 5==.\n");
    ; ControlFilterFunctions[i]!=NULL; i++){
        printf("ControlFilter.%s\n", ControlFilterFunctionNames[i]);
        if(ControlFilterFunctions[i](data))
        {
            printf("YES::%d can be exactly divisible by 2 or 3 or 5.\n", data);
            ;
        }
    }
    printf("NO::%d can't be exactly divisible by 2 or 3 or 5.\n", data);
    ;
}

C语言实例:函数指针的更多相关文章

  1. c语言之函数指针应用

    c语言之函数指针应用 1.函数指针与指针函数 在开始运用函数指针前,我们需要将两个概念即:函数指针与指针函数搞清楚. 函数指针,指明这个一个函数,但返回值为指针类型,语法格式为: 类型名* 函数名A( ...

  2. c语言之函数指针

    一.基础研究 这里研究的内容是函数指针,需要我们在研究后构造程序来描述函数指针数组的用法和向函数传函数指针的方法. 指针有很多种:整型指针.结构体指针.数组指针等等,它们的本质是它们的值都是一个地址, ...

  3. 谈谈自己对C语言中函数指针的一些理解 (第一次写博客,有点小兴奋哈)

    1.函数指针声明的格式及简单的使用 (1)格式:(返回值)(*函数指针名)(参数列表)    例如:声明一个无参数无返回值的函数指针(void)(*p)(void). (2)将函数指针指向某个无参数无 ...

  4. C语言的函数指针数组(好绕啊~看完这篇估计就通关了)

    转自https://www.cnblogs.com/chr-wonder/p/5168858.html int *(*p(int))[3] 今天有人问这个是啥?我一看直接就懵逼了…… 下面做一些简单的 ...

  5. C语言基础:函数指针 分类: iOS学习 c语言基础 2015-06-10 21:55 15人阅读 评论(0) 收藏

    函数指针:指向函数的指针变量. 函数名相当于首地址. 函数指针定义:返回值类型  (*函数指针变量名)(参数类型1,参数类型2,....)=初始值 函数指针类型:返回值类型  (*)(参数类型1,参数 ...

  6. c语言定义函数指针和typedef简写

    二种方法来定义函数指针 #include<stdio.h> #include<stdlib.h> #include<Windows.h> int add(int a ...

  7. C语言之函数指针、回调函数的使用

    一.背景 首先看下如下代码,这个定义是放在头文件的,在程序中tCdrvCallbackFkt也定义了另一个变量,而且括号后面还跟定义了几个变量,不理解这个定义. typedef void (PUBLI ...

  8. c语言的函数指针和函数指针数组的简单demo

    今天,简单记录一下,函数指针和函数指针数组的使用,废话不多说,直接贴上代码,里面有详细的注释,方便以后查阅. #include <cstdio> #include <Windows. ...

  9. c语言的函数指针

    简单定义并间接调用 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<time.h> void singas ...

  10. 可读性很强的C语言的函数指针定义

    通常C/C++程序里面要用到大量的指针,其语法非常难以阅读.比如下面的vp指针类型: #include <iostream> using namespace std; typedef vo ...

随机推荐

  1. 企业SaaS模式的优缺点

    好处: 1.降低成本 项目成本.人员成本 2.使用简单 无需系统维护,用户只需登录就可以享受系统的功能 3.安全性 SaaS模式下,企业用户最关注的是自己的数据能不能得到安全保护. A.涉及的数据有哪 ...

  2. zeppelin 一直报这个警告 也是醉了

    用./zeppelin-daemon.sh start 启动zeppelin 一直报这个警告.. WARN [2017-03-23 19:11:34,461] ({qtp483422889-45} N ...

  3. Windows Server2012R2 FTP服务器配置

    转载博客:http://blog.csdn.net/smalllu161226/article/details/53887751 1.打开windows server2012R2 服务器管理器界面 添 ...

  4. Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求

    Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求   Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求 java ...

  5. mui---获取设备的网络状态

    在用mui做音乐或视频播放器的时候,往往会考虑当前音乐+视频的播放环境.例如是4G ,WIFI,无网络,给出特定的提示: 具体做法:根据 getCurrentType来进行获取当前网络的类型: plu ...

  6. HTML5在手机端实现视频全屏展示

    最近做项目,遇到一个问题,在手机上要实现视频的全屏播放功能.测试了很久,终于找到解决办法. 第一种:将视频放大来控制. 视频在播放的时候,全屏是根据高度来的,如果设置视频 video 标签的宽度是 1 ...

  7. axis2与cxf区别

    1.CXF支持 WS-Addressing,WS-Policy, WS-RM, WS-Security和WS-I Basic Profile.Axis2不支持WS-Policy,但是承诺在下面的版本支 ...

  8. Nginx打卡

    Nginx打卡 此括号中的是干货 [ 直接说最关心的事:如何去掉访问路径的端口号? 答案:使用Nginx啊 具体安装还需看底下啰嗦的东东,安装OK且完美启动的同学,server proxy_pass ...

  9. 在CentOS 7.6上安装VNC Server

    停止并禁用防火墙 systemctl stop firewalld.service systemctl disable firewalld.service 安装vnxserver yum instal ...

  10. Docker入门1------概念和安装

    关于docker的介绍: https://www.cnblogs.com/neptunemoon/p/6512121.html docker入门教程:http://www.docker.org.cn/ ...