私は、同じ構造体型(peca)へのリンクを含むこの構造体を持っています。問題は、別の関数でpeca-> penextを試してみると、構造体pecaが次のまたは前のものにリンクされていないことをデバッガが示していることです。私は間違って何をしていますか?私のCプログラムでリンクリストをデバッグするのが難しい
typedef struct peca{
int index;
int esquerda;
int direita;
int disponibilidade;
struct peca *penext;
struct peca *peant;
}PECA;
typedef struct mao{
int index;
int tamanho;
PECA *ppeca;
struct mao *pnext;
}MAO;
typedef struct jogada{
int index;
PECA *ppeca;
struct jogada *pnext;
}JOGADA;
typedef struct jogo{
int nr_maos;
MAO *pmao;
JOGADA *pjog;
}JOGO;
void init_jogada(JOGADA *pj) {
pj->ppeca = (PECA *) malloc(sizeof(PECA) * 28);
PECA *paux = pj->ppeca;
for (int i = 0; i < 28; ++i) {
paux->index = i;
paux->disponibilidade = 1;
if (i == 0)
{
paux->peant = NULL;
paux->penext = paux++;
}
else if (i == 27)
{
paux->peant = paux--;
paux->penext = NULL;
}
else
{
paux->penext = paux++;
paux->peant = paux--;
}
paux++;
}
}
[C ' 'に'のmalloc() 'と家族の戻り値をキャストさせない理由でこの議論を参照してください。](のhttp://のstackoverflow。 com/q/605845/2173917)。 –
'paux - ' __after__ 'paux ++'を本当にしたいですか? –
なぜですか? この方法では、膿が次の場合、pauxは前のものを指し示します。 –