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;

总结

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

相关文章

  • 解析C++中派生的概念以及派生类成员的访问属性

    解析C++中派生的概念以及派生类成员的访问属性

    这篇文章主要介绍了解析C++中派生的概念以及派生类成员的访问属性,是C++入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • 从汇编看c++中变量类型的深入分析

    从汇编看c++中变量类型的深入分析

    本篇文章是对c++中的变量类型进行了详细的分析介绍。需要的朋友参考下
    2013-05-05
  • 深入探讨:宏、内联函数与普通函数的区别

    深入探讨:宏、内联函数与普通函数的区别

    本篇文章是对宏、内联函数与普通函数的区别进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • VSCode (Visual Studio Code) V1.43.0下载并设置成中文语言的方法

    VSCode (Visual Studio Code) V1.43.0下载并设置成中文语言的方法

    Visual Studio Code是一款免费开源的现代化轻量级代码编辑器,支持语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、GIT 等特性,这篇文章主要介绍了VSCode (Visual Studio Code) V1.43.0下载并设置成中文语言,需要的朋友可以参考下
    2020-03-03
  • 解析结构体的定义及使用详解

    解析结构体的定义及使用详解

    本篇文章是对结构体的定义以及使用进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++详细分析讲解引用的概念与使用

    C++详细分析讲解引用的概念与使用

    引用(reference)就是C++对C语言的重要扩充。引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样
    2022-05-05
  • 利用C++如何实现一个阻塞队列详解

    利用C++如何实现一个阻塞队列详解

    这篇文章主要给大家介绍了关于利用C++如何实现一个阻塞队列的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • C++命名空间使用详细介绍

    C++命名空间使用详细介绍

    考虑一种情况,当我们有两个同名的人,Zara,在同一个班里。当我们需要对它们进行区分我们必须使用一些额外的信息和它们的名字,比如它们生活在不同的区域或者兴趣爱好什么的,在C++程序中也会遇到同样的情况,所以命名空间就此产生
    2022-09-09
  • 关于C++复制构造函数的实现讲解

    关于C++复制构造函数的实现讲解

    今天小编就为大家分享一篇关于关于C++复制构造函数的实现讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • C++中String类常见题目分享

    C++中String类常见题目分享

    这篇文章主要为大家详细介绍了一些C++中String类的常见题目,文中的示例代码讲解详细,对我们掌握C++有一定的帮助,感兴趣的小伙伴可以了解一下
    2023-06-06

最新评论