gpt4 book ai didi

c - 这个 C 函数有什么问题?

转载 作者:太空宇宙 更新时间:2023-11-04 05:27:33 25 4
gpt4 key购买 nike

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();

Windows 停止工作,就像调试错误一样。谁能帮帮我吗?

非常感谢!亚历山德罗

最佳答案

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++;
}

虽然我会以复杂性为由建议不要这样做,除非你有充分的理由这样做。

关于c - 这个 C 函数有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19390191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com