我有以下
struct
和灵活的数组成员。但是,代码无法编译:
#define INITIAL_CAPACITY 5
typedef struct Object {
int size;
int elements[];
} Object;
int main(void) {
Object* result = calloc(1, sizeof(Object) + sizeof(int)*INITIAL_CAPACITY);
if (result == NULL) {
return;
}
result->size = INITIAL_CAPACITY;
int new_size = 2*result->size;
int* new_elements = calloc(1, sizeof(int)*new_size);
if (new_elements == NULL) {
return;
}
result->elements = new_elements; // "error: expression must be modifiable lvalue"
}
为什么我不能将灵活数组成员重新分配给新的、更大的数组?
ps-如果我将灵活数组成员更改为读取
int* elements
,它会编译,但我不知道为什么......
灵活数组就是数组。数组是不可修改的左值。您不能将一个数组分配给另一个数组。