c 结构体 & 函数指针模拟实现一个java class(类) 和方法
2024-08-21 23:21:09
闲来无事,纯粹练习。
student.h
#ifndef STUDENT_H_INCLUDED
#define STUDENT_H_INCLUDED #include <memory.h>
#include <stdlib.h> typedef struct _Student
{
char name[]; 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) / ;
} //数学, 语文, 英文加起来的平均分
int avg2(struct _Student *lpSelf)
{
return (lpSelf->sx + lpSelf->yw + lpSelf->yy) / ;
} //初始化
Student *student_init()
{
lpStudent lpStdt = (lpStudent) malloc(sizeof(Student));
memset(lpStdt, '\0', sizeof(Student)); lpStdt->avg = avg;
lpStdt->avg2 = avg2; return lpStdt;
}
test.c
int main(int argc, char *argv[])
{
Student *lpStdt = student_init();
lpStdt->sx = ;
lpStdt->yw = ;
lpStdt->yy = ;
lpStdt->wl = ;
lpStdt->hx = ;
lpStdt->sw = ; printf(" avg:%d\n", lpStdt->avg(lpStdt));
printf("avg2:%d\n", lpStdt->avg2(lpStdt)); return ;
}
输出的结果:
avg:35
avg2:20
最新文章
- IOS网络第五天 AFN-03-监控网络状态
- BP神经网络
- parentNode、parentElement,childNodes、children 它们有什么区别呢?
- gerrit 解决中文乱码相关配置(转载)
- Daily Query
- CSS之页面添加标签
- [OJ] Single Number II
- hdu 4635 Strongly connected(Tarjan)
- Javascript 常用
- linux 程序运行监控
- WTL error C3861: &#39;DDX_Control&#39;: identifier not found
- json 解析解乱码
- IOS开发中如何给UIImageView添加点击事件
- 六、vue如何缓存页面
- UNIX网络编程——名字与地址转换(gethostbyname,gethostbyaddr,getservbyname,getservbyport,getaddrinfo,getnameinfo函数)
- [翻译] ASP.NET Core 2.2 正式版发布
- JVM思考-init和clinit区别
- Windows Server 2008服务器上测试几个站点,改完host居然没有生效
- 转:nginx模块开发——handler(一)
- 面向对象OO第1-3次作业总结