【发布时间】:2018-08-07 06:53:07
【问题描述】:
我想创建一个函数,将给定的二维动态 int 数组增加一行。我看了几个网站、指南、教程,但都不一样,所以我现在很困惑。
二维数组有 2 个固定列。
我的代码在这里:
int length=1;
void arrayinc(int** array, int x0, int x1)
{
if (array == NULL)
malloc(array, sizeof(int[2]));
else
realloc(array, (++length)*sizeof(int[2]));
array[length-1][0]=x0;
array[length-1][1]=x1;
free(array);
}
int main()
{
int** array=NULL;
arrayinc(&array, 1, 2);
// I will do some stuff after the increase
}
我希望有人可以帮助我,并解释它是如何工作的!
对不起我的英语和糟糕的 malloc/realloc 知识。
【问题讨论】:
-
Correctly allocating multi-dimensional arrays 的副本。对这个话题感到困惑是很正常的,因为那里有很多垃圾书和垃圾老师,教你不好的做法。
-
malloc(array, sizeof(int[2]));嗯,没有。 -
调整动态数组大小的原型函数是 realloc。非常仔细地查看它的签名。为什么它有这个签名而不是其他任何签名?为什么它会返回它所做的事情?您自己的函数是否应该彻底偏离 realloc 的工作方式?如果有,为什么?
标签: c arrays multidimensional-array malloc realloc