gpt4 book ai didi

c - 链表中的变量持久化

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

我正在制作多米诺骨牌游戏,当用户向左侧添加多米诺骨牌时,多米诺骨牌会添加,但当函数退出时,添加的多米诺骨牌会消失。

仅供引用:

  • fitxesJoc(链接列表)包含多米诺骨牌游戏并且是传递给函数的指针(以便它持续整个游戏)
  • opcionesCorrectas (Domino) 包含多米诺骨牌的正确选择

    • inferior (int) 包含较小的多米诺骨牌
    • superior (int) 包含较大数量的多米诺骨牌
    • pos (int) 多米诺骨牌的位置
  • opcionFitxa (int) 包含玩家的选择

  • ultimaFitxa->seg 是“下一个”节点
tNode* ultimaFitxa = (tNode *)malloc(sizeof(tNode));ultimaFitxa->info.inferior = opcionesCorrectas[opcionFitxa - 1].inferior;ultimaFitxa->info.superior = opcionesCorrectas[opcionFitxa - 1].superior;ultimaFitxa->info.pos = opcionesCorrectas[opcionFitxa - 1].pos;ultimaFitxa->seg = fitxesJoc;fitxesJoc = ultimaFitxa;

Header of the function

unsigned int demanar_fitxa_tirar(tJugador *jugador, tNode* fitxesJoc, tPartida *partida, tPila* fitxesBarrejades, bool primerCop)

函数的调用

resultado = demanar_fitxa_tirar(&Jugadors[jugadorActual], fitxesJoc, partida, fitxesBarrejades, true);

通过这种方式,我将多米诺骨牌添加到其他多米诺骨牌的顶部。

最佳答案

你的问题是 demanar_fitxa_tirar 的最后一行:

fitxesJoc = ultimaFitxa;

正在分配给局部变量,这对调用代码没有影响。您需要传递一个指向调用代码的 fitxesJoc 的指针,如下所示:

unsigned int demanar_fitxa_tirar(..., tNode** fitxesJoc, ...)  // Note extra *
{
// ...
*fitxesJoc = ultimaFitxa; // Note extra *
}

void mainProgram()
{
tNode* fitxesJoc;
// ...
resultado = demanar_fitxa_tirar(..., &fitxesJoc, ...); // Note extra &
// ...
}

关于c - 链表中的变量持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1053674/

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