大佬教程收集整理的这篇文章主要介绍了从函数返回一个2d数组,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
int *MakeGridOfCounts(int Grid[][6]) { int cGrid[6][6] = {{0,},{0,}}; int (*p)[6] = cGrid; return (int*)p; }
我知道这会导致@L_489_3@,需要帮助.谢谢
用指针替换为数组
返回一个指针而不是一个数组本身.这导致C中的另一个问题:当一个函数返回一个指向某个东西的指针时,它通常应该分配动态的东西.你不应该忘记以后再次分配(当不再需要数组时).
typedef int (*pointer_to_array)[6][6]; pointer_to_array workaround1() { pointer_to_array result = malloc(sizeof(*result)); (*result)[0][0] = 0; (*result)[1][0] = 0; (*result)[2][0] = 0; (*result)[3][0] = 0; (*result)[4][0] = 0; (*result)[5][0] = 0; return result; }
用指针替换为int
一个2-D数组就像内存中的数字序列一样出现,所以你可以用一个指向第一个元素的指针替换它.你清楚地表示你想返回一个数组,但是你的示例代码返回一个指向int的指针,所以也许你可以相应地改变你的代码.
int *workaround2() { int temp[6][6] = {{0}}; // initializes a temporary array to zeros int *result = malloc(sizeof(int) * 6 * 6); // allocates a one-dimensional array memcpy(result,temp,sizeof(int) * 6 * 6); // copies stuff return result; // cAnnot return an array but can return a pointer! }
用结构包裹
这听起来很愚蠢,但函数可以返回结构,即使它们不能返回数组!即使返回的结构包含一个数组.
struct array_inside { int arraY[6][6]; }; struct array_inside workaround3() { struct array_inside result = {{{0}}}; return result; }
以上是大佬教程为你收集整理的从函数返回一个2d数组全部内容,希望文章能够帮你解决从函数返回一个2d数组所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。