#include
#include
#include
typedef struct TNode{
int data;
struct TNode * next;
}TNode,*Tree;
int main(){
Tree a,b,c,d;
c=(Tree)malloc(sizeof(TNode));
c->data=7;c->next=NULL;
d=(Tree)malloc(sizeof(TNode));
d->data=10;d->next=NULL;
a=b=(Tree)malloc(sizeof(TNode));//这儿是关键
//-------------1------------------
b=c;
printf("b=c\n");
printf("b->data= %d \n",b->data);
printf("a->data= %d \n",a->data);
//------------2-----------------
//b->next=c;
//printf("b->next=c\n");
// printf("b->data=%d\n",b->data);
// printf("a->data=%d\n",a->data);
//printf("b->next->data= %d \n",b->next->data);
//printf("a->next->data= %d \n",a->next->data);
//
//a->next=d;
//printf("a->next=d\n");
//printf("b->next->data= %d \n",b->next->data);
//printf("a->next->data= %d \n",a->next->data);
//--------------3-----------
//c->next=d;
//b=c;
//printf("c->next=d\n");
//printf("b->data= %d \n",b->data);
//printf("a->data= %d \n",a->data);
//printf("b->next->data= %d \n",b->next->data);
//printf("a->next->data= %d \n",a->next->data);
return 1;
}
上面是我们的程序。有三个部分,分别标为1,2,3
加入我们运行1,可以看到结果是
这个结果也是符合我们期望的。假如,注释掉1,运行2部分,可以得到
可以看到,尽管a,b的data都是零,但是由于他们在刚开始的特殊的复制方式,他们两者其中一个的指针只向C,剩下的一个指针也会自动指向C
把2注释掉,运行3
如果采用b=c这种方式,b可以得到C的一切,的那是a缺不能,也就是说a和b指针的同步关系已经被破坏了