深拷贝和浅拷贝

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


深拷贝和浅拷贝
深拷贝和浅拷贝

其中的buf相当于一个公用的地方,第二次输入时第一次输入的已经结束了,第三次输入时第二次输入的已经结束了,
所以输出时是三个第三次输出的字符串。
2、深拷贝:每个指针指向单独的内存。
深拷贝和浅拷贝
深拷贝和浅拷贝

首先创建一个动态内存arr,用于储存buf中输入的字符串,它的arr数组每个格子里所储存的并不是同一个地址,它分别指向三个不同的地址。所以它输出的三个字符串和输入的三个字符串相同。


深拷贝和浅拷贝