美文网首页
Head Frist C学习之创建函数指针数组

Head Frist C学习之创建函数指针数组

作者: 燚随风 | 来源:发表于2016-04-01 11:38 被阅读51次
#include <stdio.h>

enum response_type {DUMP,SECOND_CHANCE,MARRIAGE};
typedef struct{
    char *name;
    enum response_type type;
} response;

void dump(response r)
{
    printf("Dear %s,\n",r.name);
    puts("Unfortunately your last date contacted us to");
    puts("say that they will not be seeing you again");
}

void second_chance(response r)
{
    printf("Dear %s,\n",r.name);
    puts("Good news:you last date has asked us to");
    puts("arrange another meeting. please call ASAP.");
}

void marriage(response r)
{
    printf("Dear %s,\n",r.name);
    puts("Congratulations! Your last date has contacted");
    puts("us with a propisal of marriage.");
}

int main()
{
    response r[] = {
        {"Mike",DUMP},{"Luis",SECOND_CHANCE},
        {"Matt",SECOND_CHANCE},{"William",MARRIAGE}
    };
    int i;
    for(i = 0; i < 4; i++){
        switch(r[i].type){
            case DUMP:
                dump(r[i]);
                break;
            case SECOND_CHANCE:
                second_chance(r[i]);
                break;
            default:
                marriage(r[i]);
        }
    }
    return 0;
}
  • 函数dump()second()amrriage()有着相同的返回值类型和心鬼头鬼脑的参数类型和列表。
  • 如果想要在数组中保存函数,就要告诉编译器函数的具体特征。因此要是使用复杂的语法。
函数指针数组.jpg
  • 在C语言中,创建枚举时会为每一个符号分配一个从0开始的数字,一次DUMP == 0, SECOND_CHANCE == !, MARRIGE ==2
replies[SECOND_CHANCE] == second_chance

因此代码可以改成:

void (*replies[])(response) = {dump,second_chance,marriage};
int main()
{
    response r[] = {
        {"Mike",DUMP},  {"Luis",SECOND_CHANCE},
    {"Matt",SECOND_CHANCE},{"William",MARRIAGE}};
    int i;
    for(i = 0; i < 4; i++){
        (replies[r[i].type])(r[i]);
    }
    return 0;
}
函数指针数组2.jpg

相关文章

  • Head Frist C学习之创建函数指针数组

    函数dump()、second()、amrriage()有着相同的返回值类型和心鬼头鬼脑的参数类型和列表。 如果想...

  • Head First C学习之"函数"指针

    位于Head Frist C第318页: 函数名是指向函数的指针 函数名也是指针变量。 当你创建一个函数的同时,也...

  • C语言

    C 指针、指针变量、函数指针、指针函数、指针数组、数组指针、C 数组

  • 再学C语言之指针要点

    C之字符数组 C之指针引用字符串 C语言之数组指针 数组指针:首先它是一个指针,它指向数组指针数组:首先它是一个数...

  • 02-C语言的指针

    02-C语言的指针 目标 C语言指针释义 指针用法 指针与数组 指针与函数的参数 二级指针 函数指针 指针在C中很...

  • C语言 - 中

    总目录 前言 本文介绍C语言的指针:一、指针介绍二、指针使用三、数组指针和指针数组 函数指针和指针函数 环境 1...

  • 学习笔记3(指针运算,函数参数与指针,数组指针,二级指针)

    一、指针运算 二、数组与指针 三、指针和函数参数 java中: C/C++中: 四、指针数组 五、 二级指针 六、...

  • 函数指针

    概念: 指针函数, 函数指针, 指针数组, 数组指针, 指向数组的指针, 指向函数指针数组的指针。

  • ndk02_指针运算,函数参数与指针,数组指针,二级指针

    一、指针运算 二、数组与指针 三、指针和函数参数 四、指针数组 五、 二级指针 六、知识要点 1、C语言中的函数如...

  • 混淆知识点

    1、指针数组&数组指针、常量指针&指针常量、函数指针&指针函数 数组指针&指针数组 数组指针的定义 int (*p...

网友评论

      本文标题:Head Frist C学习之创建函数指针数组

      本文链接:https://www.haomeiwen.com/subject/sikylttx.html