c-知道吗?警告赋值使指针来自不带强制转换的整数



我有这样的

我的结构看起来像这个

typedef struct something
{
int randomData;
int **array;
}SOMETHING;

阵列已分配

SOMETHING *ANYTHING= calloc(sizeof(SOMETHING),sizeof(int));
ANYTHING->array = calloc(someSizeParamater,sizeof(SOMETHING));
int key = 5;

在一个代码中,我希望在array[index]中这样做,我放入了一些int值:

ANYTHING->array[index]=key;

但它说,如果出现错误,你知道如何解决这个问题吗?编译器自己重新键入它,但我想知道如何正确地将值分配给struct。

一旦我做了ANYTHING->array[0][index] = key;程序崩溃,无法正常工作,因为它在给定的警告下工作。

array类型为int**,它是一个指针(即指向另一个指针,指向指向指向int的指针(。

[]运算符取消引用(一次(。

因此,执行array[...]会评估array指向的内容,也就是上面提到的int*,您的代码试图在此处为其分配一个int

ANYTHING->array[index]=key;

您绝不会想将int分配给int*,分配给指向int的指针。

最新更新