如何实现在C89编译时未知大小的数组?

时间:2013-12-27 14:22:24

标签: c arrays c89

对不起,我是C的新手,想知道如何在引入C99标准之前创建一个在编译时不知道大小的数组。

5 个答案:

答案 0 :(得分:1)

使用malloc中的stdlib.h函数创建动态数组对象。

答案 1 :(得分:1)

通常的方法是在堆上分配数据

  #include <stdlib.h>
  void myfun(unsigned int n) {
    mytype_t*array = (mytype_t*)malloc(sizeof(mytype_t) * n);
    // ... do something with the array
    free(array);
  }

你也可以在堆栈上分配(所以你不需要手动释放):

  #include <alloca.h>
  void myfun(unsigned int n) {
    mytype_t*array = (mytype_t*)alloca(sizeof(mytype_t) * n);
    // ... do something with the array
  }

答案 2 :(得分:1)

这很容易。例如,如果要创建可变长度1D int数组,请执行以下操作。首先,声明一个指向int的指针:

int *pInt;

接下来,为它分配内存。您应该知道需要多少元素(NUM_INTS):

pInt = malloc(NUM_INTS * sizeof(*pInt));

不要忘记free动态分配的数组以防止内存泄漏:

free(pInt);

答案 3 :(得分:0)

您可以dynamic memory allocation执行此操作。使用malloc功能。

答案 4 :(得分:0)

malloc或calloc

YourType* ptr = malloc(sizeof(YourType)*NumberOfItemsYouNeed)