闲来无事,纯粹练习。

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

c 结构体 & 函数指针模拟实现一个java class(类) 和方法的更多相关文章

  1. c语言中较常见的由内存分配引起的错误_内存越界_内存未初始化_内存太小_结构体隐含指针

    1.指针没有指向一块合法的内存 定义了指针变量,但是没有为指针分配内存,即指针没有指向一块合法的内浅显的例子就不举了,这里举几个比较隐蔽的例子. 1.1结构体成员指针未初始化 struct stude ...

  2. C#将结构体和指针互转的方法

    . 功能及位置 将数据从托管对象封送到非托管内存块,属于.NET Framework 类库 命名空间:System.Runtime.InteropServices 程序集:mscorlib(在 msc ...

  3. C语言结构体和指针

    指针也可以指向一个结构体,定义的形式一般为: struct 结构体名 *变量名; 下面是一个定义结构体指针的实例: struct stu{ char *name; //姓名 int num; //学号 ...

  4. 深入了解Windows句柄到底是什么(句柄是逻辑指针,或者是指向结构体的指针,图文并茂,非常清楚)good

    总是有新入门的Windows程序员问我Windows的句柄到底是什么,我说你把它看做一种类似指针的标识就行了,但是显然这一答案不能让他们满意,然后我说去问问度娘吧,他们说不行网上的说法太多还难以理解. ...

  5. 37深入理解C指针之---结构体与指针

    一.结构体与指针 1.结构体的高级初始化.结构体的销毁.结构体池的应用 2.特征: 1).为了避免含有指针成员的结构体指针的初始化复杂操作,将所有初始化动作使用函数封装: 2).封装函数主要实现内存的 ...

  6. 【学习笔记】【C语言】指向结构体的指针

    1.指向结构体的指针的定义 struct Student *p;  2.利用指针访问结构体的成员 1> (*p).成员名称 2> p->成员名称 3.代码 #include < ...

  7. C的结构体函数

    #include<stdio.h> #include<string.h> struct Test { int age; ]; double score; }std1; //结构 ...

  8. 我写了一个java实体类,implements了Serializable接口,然后我如何让serialversionUID自动生成

    写了一个java实体类,implements了Serializable接口,让serialversionUID自动生成方法: 1.点击类旁边的警告符号: 2.选择Add generated seria ...

  9. 高阶函数与接口混入和java匿名类

    高阶函数与接口混入和java匿名类. 高阶函数中的组件(参量)函数相当于面向对象中的混入(接口)类. public abstract class Bird { private String name; ...

随机推荐

  1. idea 创建的spingmvc 引入jquery后jquery函数始终不执行的原因

  2. VMware与CentOS的安装与Linux简单指令

    一 . VMware与CentOS系统安装 下载CentOS系统的ISO镜像 # 官方网站,国外网站,下载速度会很慢 www.centos.org # 由于国外的下载速度慢,我们可以使用国内的镜像源 ...

  3. WPF中如何为ItemsControl添加ScrollViewer并显示ScrollBar

    今天在开发的过程中突然碰到了一个问题,本来的意图是想当ItemsControl中加载的Item达到一定数量时,会出现ScrollViewer并出现垂直的滚动条,但是实际上并不能够达成目标,对于熟手来说 ...

  4. Fabric运维从入门到精通

    1. fabric的安装 在windows下的python3中安装fabric: 在python安装根目录下使用pip install fabric 安装 如图: fabric只支持python2不支 ...

  5. 四、K8S

    一.查看日志 journalctl -xeu kubelet

  6. 三、oneinstack

    一.介绍 oneinstack https://www.cnblogs.com/lxwphp/p/9231554.html

  7. SECCON 2014 CTF:Shuffle

    很简单的一道小题 dia看一下是ELF文件 运行之: St0CFC}4cNOeE1WOS !eoCE{ CC T2hNto 是一串乱七八糟的字符 ida看一下: 很简单的逻辑 v5和v6是随机生成的两 ...

  8. MySQL 索引长度和区分度

    首先  索引长度和区分度是相互矛盾的, 索引长度太短,那么区分度就很低,吧索引长度加长,区分度就高,但是索引也是要占内存的,所以我们需要找到一个平衡点: 那么这个平衡点怎么来定? 比如用户表有个字段 ...

  9. Android SDK Mirror

    Android SDK Manager - Tools - Option - Proxy Settings - HTTP Proxy Server mirrors.zzu.edu.cn Force H ...

  10. Codeforces#543 div2 A. Technogoblet of Fire(阅读理解)

    题目链接:http://codeforces.com/problemset/problem/1121/A 真·阅读理解 题意就是 有n个人 pi表示他们的强度 si表示他们来自哪个学校 现在Arkad ...