gpt4 book ai didi

对二维结构体的指针感到困惑

转载 作者:行者123 更新时间:2023-11-30 20:13:00 25 4
gpt4 key购买 nike

我正在使用 malloc 创建动态结构。我的结构如下所示:

typedef struct
{
int v=;
int t;
struct a *prev;//points to previous struct in same row
struct a *next;//points to next struct in same row
//Is this correct notation?
} a;
a **b;

在初始化期间,我这样做:

for(i=0;i<d1;i++)
{
for(j=0;j<d2;j++)
{
if (j==0) //if first block, point to NULL
b[i][j]->prev = NULL;
else //else point to previous block.
b[i][j]->prev = *(b[i] + j - sizeof(b[i][j]));
}
}

我收到错误类型参数无效。这里有什么问题吗?对于上一个,我尝试首先找到当前 block 的地址 *(b[i]+j) 并获取前一个 block 的地址,减去每个 block 的大小,即 sizeof( b[i][j])

最佳答案

b[i][j] 不是指针。因此,您不能使用:

b[i][j]->prev = NULL;

使用

b[i][j].prev = NULL;

更新

可以使用以下方式创建对象之间的链接:

for(j=0;j<d2;j++)
{
// Fix the prev link
if (j==0) //if first block, point to NULL
b[i][j].prev = NULL;
else //else point to previous block.
b[i][j].prev = &b[i][j-1];

// Fix the next link
if (j==d2-1) //if last block, point to NULL
b[i][j].next = NULL;
else //else point to next block.
b[i][j].next = &b[i][j+1];

}

关于对二维结构体的指针感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33133175/

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