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

时间:2013-11-20 02:30:35

标签: 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 *'

1 个答案:

答案 0 :(得分:0)

您正尝试分配给数组。这不会发生。数组就是它最初的大小。它不能采用新的地址和大小。

variables需要成为指针。

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