C语言结构体中指针的复制问题
来源:互联网 发布:淘宝买家晒图 编辑:程序博客网 时间:2024/05/15 00:22
#include<stdio.h>#include<stdlib.h>#include<malloc.h>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指针的同步关系已经被破坏了
0 0
- C语言结构体中指针的复制问题
- 关于C语言结构体的赋值(复制)问题
- C语言中结构体变量复制的例子
- C语言中结构体指针的定义和引用
- C语言中结构体指针的定义和引用
- C语言中结构体指针的成员变量访问
- C语言中结构体指针的定义和引用
- C语言中结构体指针的定义和引用
- C语言中结构体指针的定义和引用
- C语言中结构体指针的定义和引用
- C语言中结构体指针的定义和引用
- C语言中结构体指针的定义和引用
- C语言中结构体指针的定义和引用
- C语言中结构体指针的定义和引用
- C语言中->、变量、指针、结构体的解释,通俗易懂!
- c语言中结构体指针
- C语言中指针的一些问题
- C语言:结构体中一级指针和二级指针的创建与释放示例
- 华为的冬天
- XDOJ1211 - 迎新仪式
- 各种 基于Unity3d 引擎的Android游戏优化 (drawcall)
- java中的节点流
- 配置Tomcat虚拟主机
- C语言结构体中指针的复制问题
- 华为的红旗到底能打多久
- OC基础教程之基本语法
- hdu 2544
- Android NDK的文件夹
- 生成图片验证码的Servlet
- 寻找丑数
- centos搭建samba
- Spring MVC form 绑定,post 数据为空