结构体中的深浅拷贝

来源:互联网 发布:ipad 32g够用吗 知乎 编辑:程序博客网 时间:2024/05/17 00:56
#define _CRT_SECURRE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include <string.h>typedef struct Teacher {char name[20];char *pname;int age;}Teacher;void copyStruct2(Teacher *to,Teacher* from){//*to = *from;//编译器的==操作 只会把指针变量的值copy,但不会拷贝指针变量所指的内存空间,浅拷贝memcpy(to,from,sizeof(Teacher));to->pname = (char *)malloc(20*sizeof(char));//深拷贝strcpy(to->pname,from->pname);}int main(){Teacher t1;//28Teacher t2;strcpy(t1.name,"name1");//t1.pname = (char*)malloc(20*sizeof(char));strcpy(t1.pname,"name2");//printf("sizeof(t1):%d\n",sizeof(t1));copyStruct2(&t2,&t1);printf("%s\n",t2.name);if (t1.pname !=NULL){free(t1.pname);}t1.pname = NULL;if (t2.pname !=NULL){free(t2.pname);}t2.pname = NULL;system("pause");return;}

0 0