美文网首页
结构体的深拷贝和浅拷贝

结构体的深拷贝和浅拷贝

作者: yuanCruise | 来源:发表于2019-08-06 22:35 被阅读0次
  • 浅拷贝:拷贝之后对于如下所示的结构体中的指针,拷贝后仍然和拷贝前共用一个堆区。
  • 深拷贝:产生新的堆区。
#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级指针 或 二级指针 

//如果 想执行深copy,再显示的分配内存
void copyTeacher(Teacher *to, Teacher *from)
{
    *to = *from;

    to->pname2 = (char *)malloc(100);
    strcpy(to->pname2, from->pname2);

    //memcpy(to, from , sizeof(Teacher));
}
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 ;
}

相关文章

  • Go 面向对象编程

    struct 实例化方式 结构体语法糖 结构体是值类型 结构体 深拷贝和浅拷贝 即值传递和引用传递 匿名结构体 结...

  • iOS浅拷贝和深拷贝,copy和mutableCopy的区别

    深拷贝和浅拷贝都是针对复合类型(对象,结构体指针) 浅拷贝 新对象是拷贝了原对象的地址(引用),指向的还是原来的对...

  • 结构体的深拷贝和浅拷贝

    浅拷贝:拷贝之后对于如下所示的结构体中的指针,拷贝后仍然和拷贝前共用一个堆区。 深拷贝:产生新的堆区。

  • iOS深拷贝(MutableCopy)与浅拷贝(Copy)的区别

    深拷贝和浅拷贝的概念 iOS中有深拷贝和浅拷贝的概念,那么何为深拷贝何为浅拷贝呢?浅拷贝:浅拷贝并不拷贝对象本身,...

  • iOS面试题-第二页

    11.深拷贝和浅拷贝的理解. 深拷贝;拷贝的内容. 浅拷贝:拷贝的指针. 深拷贝如: NSMutableDicti...

  • iOS - copy 与 mutableCopy

    一说到拷贝,就不得不提浅拷贝和深拷贝。 何谓浅拷贝?何谓深拷贝? 往简单的说: 浅拷贝:拷贝地址。 深拷贝:拷贝内...

  • JS中的深拷贝与浅拷贝

    知乎:js中的深拷贝和浅拷贝? 掘金: js 深拷贝 vs 浅拷贝 前言 首先深拷贝与浅拷贝只针对 Object,...

  • iOS--拷贝相关题

    1、什么是深拷贝什么是浅拷贝?浅拷贝和深拷贝的区别 * 浅拷贝(shallow copy):指针拷贝,对于被拷贝对...

  • copy和mutableCopy的区别

    copy和mutableCopy的区别 深拷贝和浅拷贝的区别 在OC中对象的拷贝方式有两种:深拷贝和浅拷贝.浅拷贝...

  • 2018-10-10函数基础

    深拷贝和浅拷贝 深拷贝 copy.deepcopy(对象)浅拷贝 copy.copy(对象)深拷贝: 将对象对应的...

网友评论

      本文标题:结构体的深拷贝和浅拷贝

      本文链接:https://www.haomeiwen.com/subject/wzmgdctx.html