| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 434 人关注过本帖
标题:为什么啊?想不通
只看楼主 加入收藏
daphne
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-7-20
收藏
 问题点数:0 回复次数:9 
为什么啊?想不通
#include<conio.h>
#include<stdio.h>
class NODE
{
friend class TREE;
private:
int DATA;
NODE *LEFT;
NODE *RIGHT;
};
class TREE
{
private:
NODE *ROOT;
public:
TREE()
{
ROOT=0;//如果是ROOT->DATA=0就不行,为什么?想不通啊~
}
void BUILD_TREE(NODE *&Root,int Data);
int SEARCH_TREE(NODE *Root,int Data);
void TREE::DISPLAY_TREE(NODE *Root);
~TREE(){}
};
2006-09-13 17:37
yvtianzll
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2006-9-13
收藏
得分:0 
ROOT-&gt;DATA=0钟root为野指针!
2006-09-13 20:52
daphne
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-7-20
收藏
得分:0 
#include<conio.h>
#include<stdio.h>
class NODE
{
friend class TREE;
private:
int DATA;
NODE *LEFT;
NODE *RIGHT;
};
class TREE
{
private:
NODE *ROOT;
public:
TREE()
{
ROOT=NULL;//如果是ROOT->DATA=0就不行,为什么?想不通啊~
ROOT->DATA=0;
}
void BUILD_TREE(NODE *&Root,int Data);
int SEARCH_TREE(NODE *Root,int Data);
void TREE::DISPLAY_TREE(NODE *Root);
~TREE(){}
};

我改成这样应该就不是野指针了,但为什么还是不行呢?

2006-09-14 09:15
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 

编译 能通过啊


2006-09-14 11:07
daphne
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-7-20
收藏
得分:0 
编译可以
但是运行就错了.

2006-09-14 11:50
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

BOOT给0,是不允许对这个地址操作的。



#include<conio.h>
#include<stdio.h>
class NODE
{
friend class TREE;
private:
int DATA;
NODE *LEFT;
NODE *RIGHT;
public:
NODE(){DATA=0;}
};
class TREE
{
private:
NODE *ROOT;
public:
TREE()
{
ROOT=new NODE;
}
void BUILD_TREE(NODE *&Root,int Data);
int SEARCH_TREE(NODE *Root,int Data);
void TREE::DISPLAY_TREE(NODE *Root);
~TREE(){delete ROOT;}
};

[此贴子已经被作者于2006-9-14 12:30:50编辑过]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-09-14 12:30
daphne
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-7-20
收藏
得分:0 

这样ROOT就不是野指针了吗?
应该还是吧?


2006-09-14 15:39
daphne
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-7-20
收藏
得分:0 

这个地方的ROOT=0是说ROOT里面的DATA为0还是说ROOT为空哦?


2006-09-15 09:28
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 
如果 想让 root的data为0,那么你应该在
class NODE
{
friend class TREE;
private:
int DATA;
NODE *LEFT;
NODE *RIGHT;
public: NODE():DATA(0),LEFT(NULL),RIGTH(NULL){}
};定义一个构造函数

2006-09-15 09:37
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
晕了
你ROOT为0
表示这个指针现在安全了
但不能有任何操作
除了DELETE
而DATA是属于这个指针所指内容的
不是这个指针的
你NODE ROOT=0就表示ROOT这是一个NODE指针,但还没有可指对象
那你还操作了能对么

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-09-16 13:30
快速回复:为什么啊?想不通
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015250 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved