typedef struct Carta* BAR_tppCarta
BAR_tppCarta * BAR_CriarBaralho ()
{
int i;
int j;
int k=0;
BAR_tppCarta *baralho;
baralho = (BAR_tppCarta *) malloc(NUM_CARTAS*sizeof(BAR_tppCarta));
if(!baralho)
return NULL;
for(i=COPAS;i<=ESPADA;i++)
for(j=AS;j<=KING;j++)
{
baralho[k]->naipe = i;
baralho[k]->valor = j;
k++;
}
return baralho;
}当我在另一个模块中调用此函数时,使用
BAR_tppCarta *baralho = BAR_CriarBaralho();窗口停止工作,就像调试错误一样。有谁能帮帮我吗?
非常感谢!Alessandro
发布于 2013-10-16 04:16:47
BAR_tppCarta只是一个指针,所以你返回的只是一个未初始化的指针数组(而且你也是在内存上乱踩)。我怀疑这一行:
typedef struct Carta* BAR_tppCarta;应该是:
typedef struct Carta BAR_tppCarta;这两行代码:
baralho[k]->naipe = i;
baralho[k]->valor = j;应该是:
baralho[k].naipe = i;
baralho[k].valor = j;或者,您可以将BAR_tppCarta的原始定义保留为
typedef struct Carta* BAR_tppCarta;然后为每个实例分配内存:
for(i=COPAS;i<=ESPADA;i++)
for(j=AS;j<=KING;j++)
{
baralho[k] = malloc(sizeof(struct Carta));
baralho[k]->naipe = i;
baralho[k]->valor = j;
k++;
}尽管我建议不要这样做,因为它很复杂,除非你有很好的理由这样做。
https://stackoverflow.com/questions/19390191
复制相似问题