我使用带有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;
任何人都有想法为什么会这样?
答案 0 :(得分:0)
这是因为unsigned int *与unsigned int [S] [E] [2]指针不同。一个是指向特定大小数组的指针。
相反,您可以将指针指定给数组的第一个元素或强制转换。
例如,下面有效,因为这是一个指向int的指针(特别是数组的第0个元素)
c->data = &data[0][0][0]