为什么我不能重新分配灵活数组成员?

问题描述 投票:0回答:1

我有以下

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
,它会编译,但我不知道为什么......

arrays c pointers dynamic-memory-allocation
1个回答
0
投票

灵活数组就是数组。数组是不可修改的左值。您不能将一个数组分配给另一个数组。

© www.soinside.com 2019 - 2024. All rights reserved.