【发布时间】:2017-06-06 15:45:15
【问题描述】:
我有两个函数
int zapiszGenotyp(genotyp *p, int dlugoscGenotypu, int genDoWpisania)
{
if (!p)
{
genotyp *nowy = new genotyp;
nowy->pNext = 0;
p = nowy;
nowy->gen = genDoWpisania;
dlugoscGenotypu++;
}
else if (p->pNext == 0)
{
genotyp *nowy = new genotyp;
nowy->pNext = 0;
p->pNext = nowy;
nowy->gen = genDoWpisania;
dlugoscGenotypu++;
}
else
zapiszGenotyp(p->pNext, dlugoscGenotypu, genDoWpisania);
return dlugoscGenotypu;
}
void stworzListeOsobnikow(osobnicy *& p, ifstream & input)
{
while (input)
{
if (p==0)
{
p = new osobnicy;
string linia;
getline(input, linia);
istringstream strumien(linia);
int gen;
while (strumien >> gen)
{
p->dlugoscDNA = zapiszGenotyp(p->pGeny, 0, gen);
}
p->pNext = 0;
double(*wybraneDopasowanie)(genotyp*);
wybraneDopasowanie = dopasowanie1;
p->dopasowanie = wybraneDopasowanie(p->pGeny);
}
else if (p->pNext == 0)
{
osobnicy *nowy = new osobnicy;
string linia;
getline(input, linia);
istringstream strumien(linia);
int gen;
while (strumien >> gen)
{
nowy->dlugoscDNA=zapiszGenotyp(nowy->pGeny, 0, gen);
}
nowy->pNext = 0;
p->pNext = nowy;
double(*wybraneDopasowanie)(genotyp*);
wybraneDopasowanie = dopasowanie1;
p->dopasowanie = wybraneDopasowanie(p->pGeny);
}
else
stworzListeOsobnikow(p->pNext, input);
}
他们使用以下结构
struct genotyp
{
genotyp * pNext;
int gen;
};
struct osobnicy
{
osobnicy * pNext;
genotyp * pGeny;
int dlugoscDNA;
double dopasowanie;
};
当我尝试运行代码时,它会在 stworzListeOsobnikow() 运行 zapiszGenotyp() 时停止。我已经意识到传递给 zapiszGenotyp() 的指针作为 genotyp *p 始终是 CDCDCCDCD 但我不知道它是什么意思。只是在 zapiszGenotyp() 中使用 p->pNext 会使程序崩溃。谁能向我解释这个 CDCDCDCD 指针是什么,我的代码似乎有什么问题?
【问题讨论】:
-
能否整理一下代码的格式。 BTW CDCDCCDC,.. 表示某些东西尚未初始化
标签: c++ list pointers structure