首页 >后端开发 >C++ >如何从 C 函数返回二维数组?

如何从 C 函数返回二维数组?

Linda Hamilton
Linda Hamilton原创
2024-12-08 15:36:13370浏览

How Can I Return a 2D Array from a C   Function?

在 C 函数中返回二维数组

在 C 中,使用数组和函数时,通常需要返回多维数组。本文解决了如何从 C 中的函数返回 2D 数组的具体问题。

提供的代码尝试 MakeGridOfCounts() 旨在返回 2D 数组,但由于数组衰减而无法实现。相反,要正确返回 2D 数组,必须返回指向该数组的指针。

动态创建 2D 数组

为了克服静态数组的限制,C 提供了一种创建多维数组的方法动态地。下面的代码演示了如何在堆上创建一个新的二维数组:

int** create2DArray(unsigned height, unsigned width) {
  int** array2D = 0;
  array2D = new int*[height];

  for (int h = 0; h < height; h++) {
    array2D[h] = new int[width];

    for (int w = 0; w < width; w++) {
      // fill in some initial values
      array2D[h][w] = w + width * h;
    }
  }

  return array2D;
}

该函数接受两个参数,高度和宽度,并返回一个指向新创建的大小为 [高度 x 宽度] 的二维数组的指针].

返回指针

要从函数返回动态创建的二维数组,指向该数组的指针是回来了。该指针指向数组的第一个元素,并提供对整个数组的访问:

int** MakeGridOfCounts() {
  int** cGrid = create2DArray(6, 6);
  return cGrid;
}

内存清理

使用动态分配的数组时,记住清理内存是至关重要的使用后的记忆。否则,可能会发生内存泄漏:

for (int h = 0; h < height; h++) {
  delete[] my2DArray[h];
}
delete[] my2DArray;
my2DArray = 0;

结论

通过遵循上述技术,您可以有效地从 C 中的函数返回 2D 数组。请记住动态创建数组以避免静态数组的限制并在使用后清理分配的内存。

以上是如何从 C 函数返回二维数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn