目录

1. 结构体的浅拷贝

2.  结构体的深拷贝

3. 结构体变量在堆区 结构体的指针成员也指向堆区


1. 结构体的浅拷贝

相同类型的结构体变量可以整体赋值,默认赋值方式为:浅拷贝
浅拷贝:将结构体变量空间内容 赋值一份 到另一个相同类型的结构体变量空间中
如果结构体中没有指针成员 浅拷贝 不会带来问题。
如果结构体中有指针成员 浅拷贝 会带来多次释放堆区空间的问题。
struct Stu
{
int num ;
char * name ;
};
Stu lucy ;
lucy . num = 100 ;
lucy . name = new char [ 32 ];
strcpy ( lucy . name , "hello world" );
Stu bob ;
bob = lucy ;
cout << bob . num << " " << bob . name << endl ;
delete [] lucy . name ;
delete [] bob . name ;

2.  结构体的深拷贝

如果结构体中有指针成员 尽量使用深拷贝
所谓的深拷贝,就是为结构体的指针成员 分配独立空间 然后再内容拷贝
struct Stu
{
int num ;
char * name ;
};
Stu lucy ;
lucy . num = 100 ;
lucy . name = new char [ 32 ];
strcpy ( lucy . name , "hello world" );
Stu bob ;
bob . num = lucy . num ;
bob . name = new char [ 32 ];
strcpy ( bob . name , lucy . name );
cout << bob . num << " " << bob . name << endl ;
delete [] lucy . name ;
delete [] bob . name ;

3. 结构体变量在堆区 结构体的指针成员也指向堆区

struct Stu
{
int num ;
char * name ;
};
// 结构体在堆区
Stu * p = new Stu ;
// 结构体中指针成员指向堆区
p -> name = new char [ 32 ];
// 赋值
p -> num = 100 ;
strcpy ( p -> name , "hello world" );
cout << p -> num << " " << p -> name << endl ;
// 释放空间
delete [] p -> name ; // 先释放成员指向
delete p ; // 再释放结构体

结构体的浅拷贝与深拷贝相关推荐

  1. 关于结构体的浅拷贝和深拷贝

    学习链接:https://www.cnblogs.com/weekbo/p/8202754.html 大概就是如果在结构体变量之间用到了赋值的话,如果有指针变量,要用自定义函数 转载于:https:/ ...

  2. C 语言结构体成员赋值的深拷贝和浅拷贝

    作者 | 李肖遥       责编 | 欧阳姝黎 最近在做通信协议的解析处理.传递分析等问题,总是遇到通信帧中的结构体拷贝等问题,遇到了一些坑,也是比较基础但是易错的C语言知识,一起来探究一下结构体的 ...

  3. 结构体对齐,结构体深拷贝和浅拷贝

     struct定义 #include<stdio.h> #include<stdlib.h> //最宽基本成员,char,int,double,结构体数组都不是最宽基本成员 ...

  4. 【C 语言】结构体 ( 结构体浅拷贝 )

    文章目录 一.结构体浅拷贝与深拷贝 二.结构体浅拷贝 三.结构体浅拷贝代码示例 一.结构体浅拷贝与深拷贝 结构体 中 嵌套了 指针 , 指针指向的内存 , 如果需要 malloc 在堆内存中 分配内存 ...

  5. C++结构体初始化方法

    在 C++ 里可以将结构体看作没有任何成员函数的对象,下面对 C++ 结构体的几种初始化方法进行总结. 文章目录 直接赋值 利用函数赋值 构造函数初始化 直接赋值 #include <bits/ ...

  6. [c/c++] programming之路(28)、结构体存储和内存对齐+枚举类型+typedef+深拷贝和浅拷贝...

    一.结构体存储 #include<stdio.h> #include<stdlib.h>struct info{char c; //1 2 4 8 double num; // ...

  7. swift 汇编2 结构体 值类型 深拷贝 引用类型 浅拷贝

     结构体 自定义了构造函数,系统就不会再自动生成构造函数 内存占用空间 对象类的构造函数   结构体和类的区别 结构体是值类型,值类型的内存地址在栈空间,连续16个字节的栈空间 类是引用类型,指针类型 ...

  8. 结构体中的浅拷贝与深拷贝

    所谓浅拷贝就是编译器机械的拷贝变量1中的内容到变量2中,如果是指针变量只会拷贝指针变量中存放的地址并不会拷贝指针所指向的内存空间的内容 深拷贝需要自己实现拷贝指针所指向的内存空间的内容 编程时不知道浅 ...

  9. 【C 语言】结构体 ( 结构体深拷贝 )

    文章目录 一.结构体浅拷贝与深拷贝 二.结构体深拷贝 三.结构体深拷贝代码示例 一.结构体浅拷贝与深拷贝 结构体 中 嵌套了 指针 , 指针指向的内存 , 如果需要 malloc 在堆内存中 分配内存 ...

最新文章

  1. 吴恩达deeplearning.ai五项课程完整笔记了解一下?
  2. SpringBoot+Vue整合WebSocket实现前后端消息推送
  3. [leetcode]LRU Cache
  4. 西华大学计算机专业怎么样呢,西华大学(专业学位)计算机技术考研难吗
  5. GitHub或正式登陆中国!拟在中国设立分公司
  6. 孙玄/陈东:聊一聊ZooKeeper的顺序一致性
  7. The following error occured:
  8. Ubuntu16.04中文输入法安装初战
  9. 死链提交为什么不能提交 html文件,如何正确使用死链提交工具
  10. 如何理解P2P网络?
  11. 网络空间测绘国内外发展及现状
  12. 怎样访问远程服务器文件夹,访问远程服务器的共享文件夹
  13. 电脑无法连接oppo手机热点
  14. “链游之王”Axie引入全新保险机制 Ronin桥重新上线 避免重蹈覆辙
  15. IP地址转化(学习笔记)
  16. 抖音下拉框电脑版,同步移动端能上传视频!
  17. 计算机科学杂志 刊号,jcst(计算机科学期刊)
  18. swift5 Notification
  19. iOS 直播类APP开发流程分解:
  20. Win10电脑流畅运行《极品飞车3:热力追踪》游戏的方法

热门文章

  1. 日语会话1.15 簡単な自己紹介をさせていただきます
  2. 谷歌趋势最好的代替品:Explodingtopics
  3. js判断数据类型(全)
  4. Android获取手机品牌信息
  5. 使用React头盔管理您的头脑
  6. 让你的数据动起来-动态柱状图
  7. lib库实现UI定制化
  8. 企业微信API--应用管理
  9. 性能测试工具 wrk 安装与初步使用
  10. 威盾php加密家解密,威盾解密