Shallow copy VS. deep copy
计算机是32位的,编译器是dev-cpp。
C源码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include <stdio.h> struct student{ char *name1; char name2[20]; }stu; int main() { struct student *p; p = &stu; strcpy((*p).name2,"second"); printf("name1 = %s \t name2 = %s\n",(*p).name1,(*p).name2); p->name1 = "third"; printf("name1 = %s \t name2 = %s\n",(*p).name1,(*p).name2); char tp[20]="fifth"; strcpy((*p).name2,tp); p->name1 = tp; tp[0]='F'; printf("name1 = %s \t name2 = %s\n",(*p).name1,(*p).name2); printf("sizeof(char *name) = %d\nsizeof(char name[20]) = %d\n", sizeof(p->name1), sizeof(p->name2)); system("PAUSE"); return 0; }
|
运行结果为:
1 2 3 4 5
| name1 = (null) name2 = second name1 = third name2 = second name1 = Fifth name2 = fifth sizeof(char *name) = 4 sizeof(char name[20]) = 20
|