在下面的代码中,我将cars数组设置为max length10000,但是如果我想将数组大小设置为用户将输入的数字,我应该怎么做?

#define MAX 10000

typedef struct Car{
    char model[20];
    char numberCode[20];
    float weight, height, width, length;
}cars[MAX];

最佳答案

#include <stdlib.h> /*Header for using malloc and free*/

typedef struct Car{
    char model[20];
    char numberCode[20];
    float weight, height, width, lenght;
} Car_t;
/*^^^^^^ <-- Type name */

Car_t *pCars = malloc(numOfCars * sizeof(Car_t));
/*                       ^            ^         */
/*                      count     size of object*/
if(pCars) {
  /* Use pCars[0], pCars[1] ... pCars[numOfCars - 1] */
  ...
} else {
  /* Memory allocation failed. */
}
...
free(pCars); /* Dont forget to free at last to avoid memory leaks */

当你写作时:
typedef struct Car{
  ...
}cars[MAX];

cars是一种包含MAXcars的复合类型,可能这不是您想要的。

关于c - 如何在C中使用struct获得动态数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31108254/

10-09 09:45