具体观看代码和注释
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
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 ;
}