c-Visual Studio 2019获取typedef数据类型的错误C2440



我遇到了这个问题,不知道如何解决:

那个错误:

error C2440: '=': cannot convert from 'void *' to 'node_t'

代码为:

node_t* arr = malloc(sizeof(node_t) * temp3);
for (int i = 0; i < temp3; i++)
arr[i] = NULL;

谢谢。

arr[i]的类型是node_t,它不是指针类型(我从错误消息中猜到了这一点(。

此代码再现了问题:

#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int a, b;
} node_t;

int main() {
node_t* arr = malloc(sizeof(node_t) * 10);
for (int i = 0; i < 10; i++)
arr[i] = NULL;    
}

你可能需要这样的东西:

void initialize_node(node_t *node)
{
// adapt this to your actual node_t type
node->a = 0;
node->b = 0;
}
int main() {
node_t* arr = malloc(sizeof(node_t) * 10);
for (int i = 0; i < 10; i++)
initialize_node(&arr[i]);
}

NULL只能分配给指针,但通过"arr[i]=NULL",实际上是在取消引用指针并将NULL分配给结构node_t。这就是你犯错的原因。

取消引用指针意味着获取存储在内存中的值指针指向的位置。

arr[i]与*(arr+i(相同。

相关内容

最新更新