Visual Studio 2019 获取带有 typedef 数据类型的错误 C2440
Visual Studio 2019 getting error C2440 with typedef data type
我遇到了这个问题,但不知道如何解决:
那个错误:
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).
我遇到了这个问题,但不知道如何解决:
那个错误:
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).