【发布时间】:2015-10-14 18:42:29
【问题描述】:
我正在使用 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]));
}
}
我收到错误无效类型参数。这里有什么问题?对于 prev,我试图首先找到当前块的地址 *(b[i]+j) 并获取前一个块的地址,减去每个块的大小,即 sizeof(b[i][j])
【问题讨论】:
-
将
n添加到类型化指针T * p;可使指针的值增加n * sizeof (T)字节。 -
目前显示的代码中没有
struct a类型。 -
当您遇到编译器或链接器错误时,请指定确切的错误消息。另外,
int v=;? -
您需要
typedef struct a {等,以便struct a *prev;表示指向此结构的指针。未标记的结构与struct a的类型不同。
标签: c pointers multidimensional-array struct