我想用动态二维数组写一个程序。我创建了5个指针数组,然后我想将一个值放在选定的5数组上,我需要重新分配才能将另一个数组放在同一个数组中,但是出现错误,我不知道如果这是正确的。有人可以帮帮我吗。动态二维数组
#include <stdio.h>
#include <stdlib.h>
void putValue(int** array, int* size, int value, int n) {
if (n == 1) {
array[0][size[0] - 1] = value;
size[0]++;
array[0] = (int*)realloc(array, size[0] * sizeof(int));
} else if (n == 2) {
array[1][size[1] - 1] = value;
size[1]++;
array[1] = (int*)realloc(array, size[1] * sizeof(int));
} else if (n == 3) {
array[2][size[3] - 1] = value;
size[2]++;
array[2] = (int*)realloc(array, size[2] * sizeof(int));
} else if (n == 4) {
array[3][size[3] - 1] = value;
size[3]++;
array[3] = (int*)realloc(array, size[3] * sizeof(int));
} else if (n == 5) {
array[4][size[4] - 1] = value;
size[4]++;
array[4] = (int*)realloc(array, size[4] * sizeof(int));
}
}
int main(void) {
int** array;
int* size;
size = (int*)malloc(5 * sizeof(int));
for (int i = 0; i < 5; i++) {
size[i] = 1;
}
array = (int**)malloc(5 * sizeof(int*));
for (int i = 0; i < 5; i++) {
array[i] = (int*)malloc(1 * sizeof(int));
}
putValue(array, size, 5, 1);
for (int i = 0; i < 5; i++) {
for (int j = 0; j < size[i]; j++) {
printf("%d ", array[i][j]);
}
printf("\n");
}
for (int i = 0; i < 5; i++) {
free(array[i]);
}
free(array);
free(size);
return 0;
}
* *什么错误?帮助什么?这不是很明显,你的问题是什么...... – talonmies
不要施加'malloc'的结果和'1 * sizeof(int)'应该用于什么? –
错误如下:释放的指针未分配 1 * sizeof(int)应为1个元素分配内存。“ – firana