C:在struct中使用3D数组?

时间:2015-05-09 21:42:47

标签: c arrays

我使用带有3D数组的结构。数组定义如下

typedef struct
{
    unsigned int s;
    unsigned int E;
    unsigned int b;
    unsigned int* data;
} cache;

在我尝试创建此结构的实例的函数中,我试图定义数据组件,但我不断收到编译器错误

错误:从不兼容的指针类型[-Werror]

中分配

函数的参数是这个;

cache* make_cache(unsigned int s, unsigned int E, unsigned int b)

我尝试使用代码

制作数据部分
unsigned int data[S][E][2];
c->data = data;

任何人都有想法为什么会这样?

1 个答案:

答案 0 :(得分:0)

这是因为unsigned int *与unsigned int [S] [E] [2]指针不同。一个是指向特定大小数组的指针。

相反,您可以将指针指定给数组的第一个元素或强制转换。

例如,下面有效,因为这是一个指向int的指针(特别是数组的第0个元素)

c->data = &data[0][0][0]