读书人

这个程序为什么编译、建立可以通过但

发布时间: 2012-03-06 20:47:55 作者: rapoo

这个程序为什么编译、建立可以通过,但是运行却出现问题,无法运行?
#include "stdlib.h "
#include "stddef.h "
#include "string.h "
#include "ctype.h "
#include "stdio.h "
#include "math.h "
#include "assert.h "

typedef struct ArcBox
{
int tail, head;
struct ArcBox *hlink , *tlink;
}ArcBox;
typedef struct FeaNode
{
char feaname[30];
int type;
union range
{
char *c_range[70];
int i_range[70];
double d_range[70];
}range;
int indegree;
int rangenum;
struct ArcBox *parent , *child;
}FeaNode;

typedef struct
{
struct FeaNode *fealist;
int feanum, arcnum;
}BayesNetwork;

void InitNB(BayesNetwork *nb)
{
struct FeaNode fealist[5]=
{{ "land ",0,{ "0 ", "1 "},0,2,NULL,NULL},
{ "wrong_fragment ",1,{0},0,2,NULL,NULL},
{ "urgent ",1,{0},0,2,NULL,NULL},
{ "hot ",1,{0},0,2,NULL,NULL},
{ "num_failed_logins ",1,{0},0,2,NULL,NULL}};

fealist[1].range.i_range[0]=0;
fealist[1].range.i_range[1]=1;
fealist[2].range.i_range[0]=0;
fealist[2].range.i_range[1]=1;
fealist[3].range.i_range[0]=0;
fealist[3].range.i_range[1]=1;
fealist[4].range.i_range[0]=0;
fealist[4].range.i_range[1]=1;

nb-> fealist=fealist;
nb-> feanum=5;
nb-> arcnum=0;

}

void TestInitNB(BayesNetwork *nb)
{
struct FeaNode *p;
InitNB(nb);
p=nb-> fealist;
while(p)
{
printf( "%s\t%d\t%d\t%d\n ",p-> feaname,p-> type,p-> indegree,p-> rangenum);
p++;
}
printf( "feature number = %d\n ",nb-> feanum);
printf( "arc number = %d\n ",nb-> arcnum);
}


void main()
{
BayesNetwork *nb=NULL;
TestInitNB(nb);
}


这个程序在编译和建立的时候,都没有错误和警告,但是在运行所生成的.exe文件的时候,遇到问题而终止。在vc++6的调试器中似乎显示的是所有带有“nb-> ”的行有问题,即使是换成“(*nb)”,问题依旧。请教大家,为什么会出现这样的问题,多谢了!

[解决办法]
void InitNB(BayesNetwork *nb)
{
struct FeaNode fealist[5]=// 局部变量
{{ "land ",0,{ "0 ", "1 "},0,2,NULL,NULL},
{ "wrong_fragment ",1,{0},0,2,NULL,NULL},
{ "urgent ",1,{0},0,2,NULL,NULL},
{ "hot ",1,{0},0,2,NULL,NULL},
{ "num_failed_logins ",1,{0},0,2,NULL,NULL}};

fealist[1].range.i_range[0]=0;
fealist[1].range.i_range[1]=1;
fealist[2].range.i_range[0]=0;
fealist[2].range.i_range[1]=1;
fealist[3].range.i_range[0]=0;
fealist[3].range.i_range[1]=1;
fealist[4].range.i_range[0]=0;
fealist[4].range.i_range[1]=1;

nb-> fealist=fealist;//???
}

[解决办法]
BayesNetwork *nb=NULL;
TestInitNB(nb);//内存也没开啊~
[解决办法]
nb = NULL之后没见到你给它分配空间,也没有给它赋值。。。

读书人网 >C语言

热点推荐