标签:
不知道为什么,我的代码运行提示段错误。
#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
标签:
原文地址:http://my.oschina.net/itfanr/blog/361231