【发布时间】:2017-06-14 15:10:21
【问题描述】:
我有以下结构
struct jucator{
char nume[100];
int *salariu;
struct jucator *urm;
};
struct echipa{
char nume[100];
struct jucator *jc;
struct echipa *urm;
};
struct echipa *ech;
void adaugajuc(char nume[100],char echipa[100],int salariu)
{
struct echipa *e=ech;
while(e)
{
if(strcmp(e->nume,echipa)==0) break;
e=e->urm;
}
if(e->jc==NULL)
{
e->jc=(struct jucator *)malloc(sizeof(struct jucator *));
*(e->jc->salariu)=salariu;
e->jc->urm=NULL;
strcpy(e->jc->nume,nume);
}
else{
struct jucator *jc=e->jc;
while(jc->urm&&jc->urm->salariu>salariu) jc=jc->urm;
if(jc==e->jc&&jc->salariu<salariu)
{
struct jucator *nod=(struct jucator *)malloc(sizeof(struct jucator *));
*(nod->salariu)=salariu;
nod->urm=jc;
strcpy(nod->nume,nume);
e->jc=nod;
}
else{
if(jc!=e->jc&&!jc->urm&&jc->salariu>salariu)
{
struct jucator *nod=(struct jucator *)malloc(sizeof(struct jucator *));
*(nod->salariu)=salariu;
nod->urm=NULL;
strcpy(nod->nume,nume);
jc->urm=nod;
}
else{
struct jucator *nod=(struct jucator *)malloc(sizeof(struct jucator *));
*(nod->salariu)=salariu;
nod->urm=jc->urm;
jc->urm=nod;
strcpy(nod->nume,nume);
}
}
}
}
我在函数中添加元素。问题是,如果我不将*salariu 放在第一个结构中,而只放入salariu,那么salariu 中将会出现具有奇怪值的元素。
我的问题是为什么?
我指定每个变量都是全局的。
我根据salariu 降序排列它们。
请也解释一下,为什么它会这样工作并且没有指针我会得到奇怪的值(并非总是如此)。
【问题讨论】:
-
我说它是全球性的
-
现在你添加了未初始化的。此代码中存在严重问题,并且可能是导致该错误的原因。但我想 that 也不能反映您的实际代码,是吗!?
-
要改进您的问题,请考虑以下问题:minimal reproducible example