• c 结构体 & 函数指针模拟实现一个java class(类) 和方法


    闲来无事,纯粹练习。

    student.h

    #ifndef STUDENT_H_INCLUDED
    #define STUDENT_H_INCLUDED
    
    #include <memory.h>
    #include <stdlib.h>
    
    typedef struct _Student
    {
        char name[16];
    
        int sx; //数学
        int yw; //语文
        int yy; //英语
        int wl; //物理
        int hx; //化学
        int sw; //生物
    
        int (*avg)(struct _Student *); // 所有分数的加起来的平均分
        int (*avg2)(struct _Student *); //数学, 语文, 英文加起来的平均分
    
    } Student, *lpStudent;
    
    Student *student_init(); //初始化
    
    #endif // STUDENT_H_INCLUDED

    student.c

    #include "student.h"
    
    // 所有分数的加起来的平均分
    int avg(struct _Student *lpSelf)
    {
        return (lpSelf->sx + lpSelf->yw + lpSelf->yy + lpSelf->wl + lpSelf->hx + lpSelf->sw) / 6;
    }
    
    //数学, 语文, 英文加起来的平均分
    int avg2(struct _Student *lpSelf)
    {
        return (lpSelf->sx + lpSelf->yw + lpSelf->yy) / 3;
    }
    
    //初始化
    Student *student_init()
    {
        lpStudent lpStdt = (lpStudent) malloc(sizeof(Student));
        memset(lpStdt, '', sizeof(Student));
    
        lpStdt->avg = avg;
        lpStdt->avg2 = avg2;
    
        return lpStdt;
    }

    test.c

    int main(int argc, char *argv[])
    {
        Student *lpStdt = student_init();
        lpStdt->sx = 10;
        lpStdt->yw = 20;
        lpStdt->yy = 30;
        lpStdt->wl = 40;
        lpStdt->hx = 50;
        lpStdt->sw = 60;
    
        printf(" avg:%d
    ", lpStdt->avg(lpStdt));
        printf("avg2:%d
    ", lpStdt->avg2(lpStdt));
    
        return 0;
    }

    输出的结果:

    avg:35
    avg2:20

  • 相关阅读:
    P1613 跑路
    数据挖掘-聚类分析(Python实现K-Means算法)
    使用scikit-learn 估计器分类
    数据挖掘-集成学习
    数据挖掘-关联分析 Apriori算法和FP-growth 算法
    scikit-learn 中常用的评估模型
    数据挖掘---支持向量机(SVM)
    数据挖掘-KNN-K最近邻算法
    数据挖掘-决策树
    数据挖掘-逻辑Logistic回归
  • 原文地址:https://www.cnblogs.com/personnel/p/8149055.html
Copyright © 2020-2023  润新知