博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
结构体的深度拷贝和浅拷贝
阅读量:4211 次
发布时间:2019-05-26

本文共 921 字,大约阅读时间需要 3 分钟。

具体观看代码和注释

 

#define  _CRT_SECURE_NO_WARNINGS #include 
#include
#include
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 ;}

 

转载地址:http://fqzmi.baihongyu.com/

你可能感兴趣的文章
解决 Asp.net 中,url传参乱码 方法之一:(UrlDecode)
查看>>
pdf的转换网址:
查看>>
c++设计模式之三~抽象工厂模式
查看>>
c++设计模式之单例模式
查看>>
c++设计模式之建造者模式
查看>>
c++设计模式之原型模式
查看>>
c++设计模式之适配器模式
查看>>
c++设计模式之桥接模式
查看>>
c++设计模式之装饰模式
查看>>
Mysql学习笔记(八)- 两个简单实用的优化方法
查看>>
mysql学习笔记(九)- 增删改查的优化
查看>>
Jenkins学习笔记(一)
查看>>
AtomicInteger源码解析
查看>>
CopyOnWriteArraySet源码学习
查看>>
ThreadLocal学习笔记
查看>>
用talib实现基于emv的简易量化投资策略
查看>>
LongAdder源码解析
查看>>
Talib学习笔记(二)- 价格指数学习
查看>>
CAS机制是什么?
查看>>
Semaphore源码解析
查看>>