首页 > 代码库 > C语言原型模式
C语言原型模式
不知道为什么,我的代码运行提示段错误。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> typedef struct _Person { const char *name; int age ; struct _Person* (*Person_Copy)(struct _Person* p) ; }Person ; struct _Person* Person_Copy(struct _Person * pData) { struct _Person* p = (struct _Person*)malloc(sizeof(struct _Person)); assert(NULL != p); memmove(p, pData, sizeof(struct _Person)); return p; }; struct _Person* mclone(struct _Person* pData){ return pData->Person_Copy(pData) ; } int main(){ const char *mname = "zhangsan" ; Person p1 = { .name = mname , .age = 18, } ; printf("name of p1 is %s, age is %d\n" , p1.name , p1.age) ; Person* p2 = mclone(&p1) ; printf("name of p2 is %s, age is %d\n" , p2->name , p2->age) ; //不知道为什么,没有输出 //改为Person* p2 = Person_Copy(&p1) 就正常 free(p2) ; return 0 ; }
参考:
1.http://blog.csdn.net/feixiaoxing/article/details/7075316
C语言原型模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。