C语言:浅拷贝与深拷贝
这里先简单讲一讲c中的浅拷贝与深拷贝,关于更深层使用的拷贝构造函数,深拷贝构造函数,浅拷贝构造函数等,以及其他语言的深拷贝这里就不赘述了。结构体跟类其实很类似,不管是使用或者作用域上。 浅拷贝:表层的引用,实际指向同一块内存 深拷贝:存放在不同的内存空间当中 typedef struct{ char name[20]; int age; }student; student stu1; student stu2; stu1.name="kkk"; stu1.age=20; stu2=stu1; printf("stu1 addr=%p, addr stu1.name=%p\n",&stu1,stu1.name); printf("stu2 addr=%p, addr stu2.name=%p\n",&stu2,stu2.name); 调试可以发现stu1和stu2地址相同,因为二者指向的是同一块内存,如果后面调用 free(stu1); free(stu2); 则会挂掉,因为重复释放了 至于深拷贝,可以给stu2单独分配一块空间,然后再把内容拷贝过去。 参考: https://blog.csdn.net/q2519008/article/details/88310012 https://blog.csdn.net/sinat_35297665/article/details