首页 > 其他分享 >结构体中的指针

结构体中的指针

时间:2023-11-26 15:33:05浏览次数:36  
标签:struct mm pPrint name MM 体中 函数指针 指针 结构

结构体中的函数指针

C++中面向对象的实现过程,其实是在结构体中加入函数指针用来调用成员函数的;
函数指针详解

include<stdio.h>
typedef void (*PRINT) (struct *pMM); // 声明一个函数指针,这个函数指针的参数为struct *pMM类型的
struct MM{
	int age;
	char* name;
	*PRINT pPrint;//定义一个结构体函数指针
};
struct MM* createMM(char *name,int age)//创建一个MM类型
{
	struct MM* mm = (struct MM*)malloc(sizeof(struct MM));
	assert(mm); //断言,防止mm这个空间开辟失败,如果开辟失败的话程序将不会实行
	//二次申请空间,因为开辟的mm的空间只有一个char类型的指针和一个int,四位存取的话肯定不够
	mm->name = (char *)malloc(sizeof(name));
	strcpy(mm->name,name); //字符赋值的话只能用strcpy函数
	mm->age = age;
	mm->pPrint = printMM;//把函数指针指向pPrint函数
	return mm;
};
void printMM(struct MM* pMM )
{
	printf("%s\t%d\n",pMM->name,pMM->age);
}

int main()
{
	struct MM* mm = createMM("小明",18);
	pPrint(mm);
	mm->pPrint(mm);
}

标签:struct,mm,pPrint,name,MM,体中,函数指针,指针,结构
From: https://www.cnblogs.com/JiayongChen/p/17857257.html

相关文章

  • 不要轻易定义指向std::vector中的元素的指针
    类应该是被封装的,类的用户通过接口使用类提供的功能,而不必关心类的内部如何实现。然而,C++标准库容器std::vector的实现渗透到了接口中来。对于以下代码:constintpushNum=10;std::vector<int>v={1,2,3};int*p=&v[1];std::cout<<"*p="<<*p......
  • 小白指针(七)--------新手入门
    我们之前讲了很多。但是指针的路还需要继续往下走,其实也快结束了,学习就是一种坚持的路,只有往前走才能学到更多,看到更多。(。・ω・。),今天的可能比前面的多,请耐心学习,谢谢在指针更新完之后我会将指针的内容,整理发一片这里是指针的快结束了,这里的一节结束还有最后有一片文章了,朋友们加油呀!一......
  • Spring MVC学习随笔-第一个Spring MVC程序(父子项目结构、Tomcat配置、ViewResolver)
    学习视频:孙哥说SpringMVC:结合Thymeleaf,重塑你的MVC世界!|前所未有的Web开发探索之旅第二章、第一个SpringMVC程序的开发2.1开发版本JDK1.8+Maven3.6+IDEA2021+SpringFramework5.1.4Tomcat8.5.29MySQL5.7.18按照父子项目的结构,管理和创建项目,创建一个空Project作为父项......
  • 【2024省选冲刺计划】数据结构相关-线段树进阶
    线段树进阶0x01李超线段树FZPJ4519[2021冬令营模拟]上古遗迹【题目背景】“沙……沙……沙……”独行者的脚步一次次被刻进沙漠中,干冷的风携沙尘在男子的四围穿过。“该死……这沙尘什么时候才能消停会儿……”男子止不住地咳嗽,随即停了下来,开始查看便携式投影设备上的信......
  • 【2024省选冲刺计划】数据结构相关-根号数据结构
    根号数据结构0x01普通分块[2018NOIP模拟]蒲公英在乡下的小路旁种着许多蒲公英,而我们的问题正是与这些蒲公英有关。为了简化起见,我们把所有的蒲公英看成一个长度为\(n\)的序列\((a_1,a_2,...,a_n)\),其中\(a_i\)为一个整数,表示第\(i\)棵蒲公英的种类编号。而每次询问......
  • 深入指针
    一、指针概括1、指针定义 Def: 指针(pointer)也就是内存地址(指针==地址),指针变量是用来存放内存地址的变量,在同一CPU下,不同类型的指针变量所占用的存储单元长度是相同的,但所占空间大小由指针变量的类型所决定。有了指针以后,不仅可以对数据本身,也可以对存储数据的变量地址进行操......
  • 数据结构之优先队列(java)
    一:概述队列的特点是:先进先出(FIFO).入队列,将元素置于队尾;出队列,队头元素最先被移出:优先队列不遵循先入先出的原则,而是分两种情况。最大优先队列,无论入队顺序如何,都是当前最大的元素优先出队最小优先队列,无论入队顺序如何,都是当前最小的元素优先出队。例如有一个最大优先队列,其中的......
  • 空间三维模型的编码结构光方法实现:基于EinScan-S软件
      本文介绍基于EinScan-S软件,实现编码结构光方法的空间三维模型重建的具体操作。目录1相关原理1.1编码结构光成像原理1.2编码结构光编码方式1.3编码结构光与侧影轮廓方法比较1.4编码结构光方法流程2三维模型制作2.1防晒霜罐三维模型制作2.1.1前期准备工作2.1.2软件配......
  • C语言自定义数据类型-结构体
    在讨论自定义数据类型之前,我们不妨先回忆一下C语言的内置类型。例如字符型的char,整型中的intshortlong以及浮点型的floatdouble,这些都会C语言本身提供的数据类型,但仅仅有这些,是不足以满足我们的开发的。那么也就意味着需要一些复杂类型来帮助我们实现对复杂对象的操作,例如结构......
  • 数据结构之二叉堆(Java)
    一:概述二叉堆:二叉堆本质上是一种完全二叉树,它分为两个类型。最大堆最小堆二:最大堆与最小堆的具体说明<1>最大堆最大堆的任何一个父节点的值,值大于或等同于它左、右孩子节点的值。例子如下图所示:<2>最小堆最小堆的任何一个父节点的值,都小于或等于它的左、右孩子节点的值。例子如下图......