#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct {
int num;
char* name;
}DATA;
int main(int argc, char* argv[])
{
DATA data1, data2;
data1.num = 100;
data1.name = (char*)calloc(1, 12);
strcpy(data1.name, "my data");
data2.num = data1.num;
//为结构体变量 申请 独立空间
data2.name = (cahr*)calloc(1, 12);
strcpy(data2.name, data1.name);
printf("data1:num = %d, name = %s\n", data1.num, data1.name);
printf("data2:num = %d, name = %s\n", data2.num, data2.name);
if (data1.name != NULL)
{
free(data1.name);
data1.name = NULL;
}
if (data2.name != NULL)
{
free(data2.name);
data2.name = NULL;
}
return 0;
}
深拷贝:说人话就是我们为我们的指针成员开辟独立的空间。
- 浅拷贝:不同的结构体变量中的指针指向同一块堆区空间
- 深拷贝:不同的结构体变量中的指针指向独立的堆区空间
- 前提:指针变量作为结构体的成员