#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;
}

深拷贝:说人话就是我们为我们的指针成员开辟独立的空间。

  • 浅拷贝:不同的结构体变量中的指针指向同一块堆区空间
  • 深拷贝:不同的结构体变量中的指针指向独立的堆区空间
  • 前提:指针变量作为结构体的成员
最后修改:2021 年 02 月 21 日
如果觉得我的文章对你有用,请随意赞赏