C语言关于开辟内存和指针的问题

[复制链接]
查看11 | 回复3 | 2012-8-28 19:39:14 | 显示全部楼层 |阅读模式
你这是想用二级指针 ,,,但事实上 却得到了 不正确的 结果 ,,这也是指针 容易出错的地方。你先定义了一个二级指针,tree并初始化 为 NULL,也就是 0,tree本身在栈区,但其指向0。然后 *tree ,这个*tree的意思 你能明白 吗?是访问0这个地址,也就是将 后面分配来的地址 写到 0 这个内存地址上,但0号地址事实上不可用,因而导致程序异常。你完全没必要用二级指针 ,也就是你将main 里面的 两个 两个 * 去掉就可以了当然 你也没有释放内存。 正确的写法如下:#include #include typedef struct BiTN...
回复

使用道具 举报

千问 | 2012-8-28 19:39:14 | 显示全部楼层
#include #include typedef struct BiTNode{
char data;
struct BiTNode *lchild, *rchild;}BiTnode,*BiTree;void main(){
BiTree *tree=NULL;...
回复

使用道具 举报

千问 | 2012-8-28 19:39:14 | 显示全部楼层
变量 tree应该定义为BiTree ,并将*tree改为tree, 因为BiTree 类型本来就是指向节点类型(BiTnode)的指针,没必要再定义指向BiTree类型的指针了。修改后代码为:
BiTree tree=NULL;
tree=(BiTree)malloc(sizeof(BiTnode));...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行