结构体中的函数指针
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