C语言中深拷贝和浅拷贝

1、浅拷贝指的是多个指针指向同一段内存;
比如字符串常量,字符串常量在一个工程中,不管定义多少次,在内存只有一份,它属于浅拷贝。
下面就举一个浅拷贝的例子:定义一个数组buf,从键盘输入三个字符串,并将其拷贝到数组arr中。

它输出的是三个第三次输入的,而没有输出前两次输入的,分析一下原因

 

 


 
其中的buf相当于一个公用的地方,第二次输入时第一次输入的已经结束了,第三次输入时第二次输入的已经结束了,
所以输出时是三个第三次输出的字符串。
2、深拷贝:每个指针指向单独的内存。
 
首先创建一个动态内存arr,用于储存buf中输入的字符串,它的arr数组每个格子里所储存的并不是同一个地址,它分别指向三个不同的地址。所以它输出的三个字符串和输入的三个字符串相同。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值