创建对象数组并分配

时间:2015-12-04 13:03:19

标签: c arrays malloc realloc

如何创建结构数组

1 个答案:

答案 0 :(得分:1)

看起来您正在尝试创建动态数组或堆栈。您可以使用结构来大大简化:

struct Stack {
    int capacity;
    int index;
    int *data;
};

然后,你想要100个(不知道为什么)......

struct Stack *pml = malloc(100 * sizeof(struct Stack));

然后初始化

for (int i = 0; i < 100; i++) {
    pml[i].capacity = 10;
    pml[i].index = 0;
    pml[i].data = malloc(10 * sizeof(int));
}

然后您可以使用函数

设置数据
void Push(struct Stack *stack, int value) {
    // Check for reallocation
    if (stack->index == stack->capacity) {
        stack->capacity *= 2;  //Assumes capacity >= 1
        stack->data = realloc(stack->data, sizeof(int) * stack->capacity);
    }
    // Set the data
    stack->data[stack->index++] = value;
}

并称之为

Push(&pml[n], 234);   // Where n < 100, is the nth stack in the array

当然,你需要free()某些事情。

(注意,您应该添加错误检查。)