C语言中如何在结构体内定义函数

 更新时间:2023年02月24日 10:36:12   作者:徒步者~  
这篇文章主要介绍了C语言中如何在结构体内定义函数问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

如何在结构体内定义函数

结构体中引入函数

#include <stdio.h>

struct student {
    char *name;
    int age;

    void (*printInfo)(struct student *stu);
};

void printInfo(struct student *stu)
{
    printf("name = %s, age = %d", stu->name, stu->age);
}

int main(int argc, char**argv)
{
    struct student students[] = {
        {"zhangsan", 10, printInfo},
        {"lisi", 26, printInfo},
    };

    students[0].printInfo(&students[0]);
    students[1].printInfo(&students[1]);
}

C++中结构体引入

#include <stdio.h>

struct student {
    char *name;
    int age;

    void printInfo(void)
    {
        printf("name = %s, age = %d\n", name, age);
    }
};

int main(int argc, char**argv)
{
    struct student students[] = {
        {"zhangsan", 10},
        {"lisi", 26},
    };

    students[0].printInfo();
    students[1].printInfo();
}

C++中类引入

#include <stdio.h>

class student {
public:
    char *name;
    int age;

    void printInfo(void)
    {
        printf("name = %s, age = %d\n", name, age);
    }
};

int main(int argc, char**argv)
{
    struct student students[] = {
        {"zhangsan", 10},
        {"lisi", 26},
    };

    students[0].printInfo();
    students[1].printInfo();
}

结构体成员有函数的定义与使用

```c

#include <stdio.h>
typedef int (*FunHandle)(int, int);			//定义 指向函数的指针 
struct Example
{
    int a;
    int b;
    FunHandle fun;					//函数作为结构体成员
};

int add(int, int);

int main()
{
    struct Example ex;
    int r;
    ex.a = 1;
    ex.b = 2;
    ex.fun = add;
    r = ex.fun(ex.a, ex.b);			//结构体中函数的 使用
    printf("%d + %d = %d \n", ex.a, ex.b, r);
    return 0;
}

int add(int a, int b)
{
    return a+b;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • FFmpeg获取网络摄像头数据解码

    FFmpeg获取网络摄像头数据解码

    这篇文章主要为大家详细介绍了FFmpeg获取网络摄像头数据解码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • c++ 写注册表方式让程序开机自启动

    c++ 写注册表方式让程序开机自启动

    这篇文章主要介绍了c++ 写注册表方式让程序开机自启动,需要的朋友可以参考下
    2017-09-09
  • C/C++内存管理之new与delete的使用及原理解析

    C/C++内存管理之new与delete的使用及原理解析

    这篇文章主要介绍了C/C++内存管理之new与delete的使用及原理解析,本文通过实例代码图文相结合给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • 深入理解C++的对象模型

    深入理解C++的对象模型

    本文在介绍C++使用的对象模型之前,先介绍了2种对象模型:简单对象模型(a simple object model)和表格驱动对象模型(a table-driven object model),这样介绍对后面的内容更有帮助,有需要的小伙伴们可以参考学习。
    2016-08-08
  • C++求1到n中1出现的次数以及数的二进制表示中1的个数

    C++求1到n中1出现的次数以及数的二进制表示中1的个数

    这篇文章主要介绍了C++求1到n中1出现的次数以及数的二进制表示中1的个数,两道基础的算法题目,文中也给出了解题思路,需要的朋友可以参考下
    2016-02-02
  • 基于C语言实现简单学生成绩管理系统

    基于C语言实现简单学生成绩管理系统

    这篇文章主要为大家详细介绍了基于C语言实现简单学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • C语言修炼之路灵根孕育源流出 初识C言大道生下篇

    C语言修炼之路灵根孕育源流出 初识C言大道生下篇

    C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言
    2022-03-03
  • 关于C++中的友元函数的一些总结

    关于C++中的友元函数的一些总结

    以下是对C++中的友元函数进行了详细的总结介绍,需要的朋友可以过来参考下
    2013-09-09
  • 用C语言实现简单五子棋小游戏

    用C语言实现简单五子棋小游戏

    这篇文章主要为大家详细介绍了用C语言实现简单五子棋小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • C语言从基础到进阶全面讲解数组

    C语言从基础到进阶全面讲解数组

    数组是一组有序的数据的集合,数组中元素类型相同,由数组名和下标唯一地确定,数组中数据不仅数据类型相同,而且在计算机内存里连续存放,地址编号最低的存储单元存放数组的起始元素,地址编号最高的存储单元存放数组的最后一个元素
    2022-05-05

最新评论