结构体,深浅拷贝

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 struct MyStruct
 5 {
 6     char *p;
 7     int num;
 8 };
 9 
10 //对于数据来说,深浅拷贝一样,对于指针,浅拷贝是拷贝地址,深拷贝拷贝内存内容
11 void main()
12 {
13     struct MyStruct my1;
14     my1.p = malloc(30);
15     my1.num = 30;
16     strcpy(my1.p,"Hello World");
17 
18     struct MyStruct my2;
19     my2 = my1; // 浅拷贝  赋值指针的地址
20     free(my1.p);// 浅拷贝时 my1.p 内存释放对my2.p有影响
21 
22 
23     my2.p = malloc(30);
24     strcpy(my2.p ,my1.p);// 深拷贝 重新拷贝内存
25     //free(my1.p);// 深拷贝时 my1.p 内存释放对my2.p有影响
26 
27     printf("my1= %s , my2= %s\n",my1.p,my2.p);
28 
29     system("pause");
30 }

 

posted on 2015-05-17 12:53  Dragon-wuxl  阅读(125)  评论(0)    收藏  举报

导航