如何创建结构数组
答案 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()
某些事情。
(注意,您应该添加错误检查。)