c - 在 C 中从类型 void * 分配给类型时出现错误不兼容类型

标签 c types struct void-pointers

这是我的头文件:

#define VECTOR_INITIAL_CAPACITY 20

struct _Variable {
    char *variableName;
    char *arrayOfElements;
    int32_t address;
};
typedef struct _Variable Variable;

struct _VariableVector {
    int size; // elements full in array
    int capacity; // total available elements
    Variable variables[VECTOR_INITIAL_CAPACITY];
};
typedef struct _VariableVector VariableVector;

void init(VariableVector *variableVector);

void append(Variable *variable);

Variable* find(char *variableName);

这是我的 .c 文件,我正在其中尝试实现 init 方法:

#include "VariableVector.h"

void init(VariableVector *variableVector) {
    variableVector->size = 0;
    variableVector->capacity = VECTOR_INITIAL_CAPACITY;

    // allocate memory for variableVector
    variableVector->variables = malloc(
            sizeof(Variable) * variableVector->capacity); // <== ERROR HERE
}

我上面遇到的错误是

incompatible types when assigning to type 'struct Variable[20]' from type 'void *'

最佳答案

您正在尝试分配给一个数组。那不会发生。该数组位于其所在位置,大小与最初相同。它不能采用新的地址和大小。

变量需要是一个指针。

struct _VariableVector {
    int size; // elements full in array
    int capacity; // total available elements
    Variable *variables;
};

关于c - 在 C 中从类型 void * 分配给类型时出现错误不兼容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20086207/

相关文章:

c - 数组的内联初始化

c++ - 计算矩阵的秩

c - 为什么释放内存时会出现运行时错误?

javascript - Closure 编译器认为参数不匹配是由于从未发生过的 null 条件

json - 转换 JSON 对象以从中提取数据时出错

c++ - 如何使用继承在作为类成员的结构中添加新条目

c - 地板浮点模数

c - 使用c读取文件中的特定记录

types - 如何理解两个命名类型在 golang 中是相同的

c - 传递struct的字段名在函数内部访问