C语言结构体数组实例

今天我看到一个项目中关于结构体数组函数是这么用的,总结出来

结构体数组 + 结构体成员是函数指针;

可以根据需求自己判断,并调用相应的函数,实现想要的功能。
比如:根据不同的名字的判断,去告诉我想要对每个人说的话。

#include <stdio.h>

//函数声明
int zhao_f(char *subject, int time);
int zhou_f(char *subject, int time);

//定义一个函数指针类型
typedef int (*learn)(char *subject,int time);

//定义一个结构体类型,成员是函数指针类型
typedef struct student{
    learn learning;
}student;

//定义结构体数组。调用不同的函数,实现不同的功能
student stu[] = {
    {zhao_f},
    {zhou_f}
};


//定义实现函数1,(函数指针类型)
int zhao_f(char *subject, int time)
{
    printf("Misszhao learn %s %d\n", subject, time);
    return 0;
}

//定义实现函数2
int zhou_f(char *subject, int time)
{
    printf("Misszhou learn %s %d\n", subject, time);
    return 0;
}

//定义test调用函数,,
learn test(int num)
{
    return stu[num].learning;
}

//根据不同的需求,调用不同的函数去实现
void test1()
{
//可以分支去实现你的功能
    learn learn_test;
    learn_test = test(0);
    learn_test("chinese", 10);

    learn_test = test(1);
    learn_test("math", 5);
}
int main(int argc, char *argv[]){
    test1();   
    return 0;
}

bao:day0823 bao$ gcc -o test1 test1.c
bao:day0823 bao$ ./test1
Misszhao learn chinese 10
Misszhou learn math 5

int num-----主要就是根据需求(也可以是char *),去达到调用不同函数 的功能。

zhou_f和zhao两个是具体的功能实现函数;

stu------是一个数组,他的每个数组成员都是一个结构体student,
结构体student只有一个成员,是一个函数指针类型learn

相关推荐
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页