本文共 921 字,大约阅读时间需要 3 分钟。
具体观看代码和注释
#define _CRT_SECURE_NO_WARNINGS #include#include #include typedef struct Teacher{ char name[64]; int age ; char *pname2; }Teacher;//编译器的=号操作,只会把指针变量的值,从from copy 到 to,但 //不会 把指针变量 所指 的 内存空间 给copy过去..//浅copy//结构体中套一个 1级指针 或 二级指针 //浅拷贝void qianCopy(Teacher *to,Teacher *from){ *to = *from; //memcpy(to, from , sizeof(Teacher)); 这个和*to=*from效果是一样的。}//深拷贝void copyTeacher(Teacher *to, Teacher *from){ *to = *from; to->pname2 = (char *)malloc(100); //这里的深拷贝需要自己开辟内存空间 strcpy(to->pname2, from->pname2); //将from-pname2所指向的内存空间中存储的值拷贝到to->pname2. }void main51(){ Teacher t1; Teacher t2; strcpy(t1.name, "name1"); t1.pname2 = (char *)malloc(100); strcpy(t1.pname2, "ssss"); //t1 copy t2 copyTeacher(&t2, &t1); if (t1.pname2 != NULL) { free(t1.pname2); t1.pname2 = NULL; } if (t2.pname2 != NULL) { free(t2.pname2); t2.pname2 = NULL; } printf("hello...\n"); system("pause"); return ;}
转载地址:http://fqzmi.baihongyu.com/