Head First C 读书笔记(二)

来源:互联网 发布:java输入整数异常 编辑:程序博客网 时间:2024/05/16 19:53


函数指针:

type (*name)(parameter types) 

调用: name(parameter)



函数指针数组:

type (*name[])(parameter types) = { };


使用函数指针数组简化程序——分手信自动生成器

#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...");}void second_chance(response r){printf("Dear %s, \n", r.name);puts("Good news: your last date has asked us to...");}void marriage(response r){printf("Dear %s, \n", r.name);puts("Congratulations! Your last date has contacted...");}// function pointer arrayvoid (*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]); }


程序中本来需要使用 switch 语句对枚举类型进行判断后才能调用函数,但是这里用函数指针数组不需要判断,直接调用了对应的函数。


0 0