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

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

#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. git使用git-credential-winstore保存https访问密码

    使用 https 方式 clone 一个 git 仓库,每次pull 或者 push 的时候都需要输入用户名和密码. 访问远程Git仓库可以用 SSH 方式和 https 方式,https 每次访问时 ...

  2. 【linux】在宝塔上 同ip 不同端口 设置一个端口对应一个网站

    准备工作: ip一个 , 例如:192.168.1.666 服务器一台,放行所需端口 假想一个域名 www.test.com ps:默认你已经装好宝塔面板了 实现效果: 192.168.1.666:6 ...

  3. 【微信开发】cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

    在做微信开发时候,请求为你接口报错: 解决方案: 1 下载cacert https://curl.haxx.se/ca/cacert.pem 2 修改 php.ini , 并重启 curl.cainf ...

  4. 转载>>C# Invoke和BeginInvoke区别和使用场景

    转载>>C# Invoke和BeginInvoke区别和使用场景 一.为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题的最主要的原因已经是dotnet程 ...

  5. SpringBoot入坑-配置文件使用

    经过上一篇的介绍,相信小伙伴们已经按奈不住内心对springboot的向往,本篇我将继续向小伙伴介绍springboot配置文件的配置,已经全局配置参数如何使用,好了下面开始我们今天的内容介绍. 我们 ...

  6. 关于vb编程之字符串连接/拼接的方法与技巧

    在VB中,笔者知道的字符串的拼接方法主要有两种拼接符号,一种为"&"符,另一种则为"+"符 一.其中&连接运算符用于强制将两个表达式作为字符串连 ...

  7. 批量数据的Excel导入

    public void importIndexHistoryByCsv(String fileName) { logger.info("开始获取Csv文件导入到数据库,csv文件名为:&qu ...

  8. 目标检测(七)YOLOv3: An Incremental Improvement

    项目地址 Abstract 该技术报告主要介绍了作者对 YOLOv1 的一系列改进措施(注意:不是对YOLOv2,但是借鉴了YOLOv2中的部分改进措施).虽然改进后的网络较YOLOv1大一些,但是检 ...

  9. delphi with... do和自定义变量重名

    with类中的变量和外部变量如果重名,会将外部变量覆盖,这点需要注意!!!!!

  10. 苹果审核被拒,解析奔溃日志.txt转crash文件

    1. 桌面新建一个文件夹,用来存放crash相关的东西.取名crash 2.下载苹果官方邮件里给的后缀名为 .txt 的被拒附件(这三个txt格式文件为苹果返回的崩溃日志文件),把这三个文件放在刚新建 ...