从函数返回一个二维数组

从函数返回一个二维数组

嗨,我是C ++的新手,我试图从一个函数返回一个二维数组。就是这样的

int **MakeGridOfCounts(int Grid[][6]){
  int cGrid[6][6] = {{0, }, {0, }, {0, }, {0, }, {0, }, {0, }};

  return cGrid;}


HUWWW
浏览 727回答 3
3回答

神不在的星期二

此代码返回2d数组。&nbsp;#include&nbsp;<cstdio> &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Returns&nbsp;a&nbsp;pointer&nbsp;to&nbsp;a&nbsp;newly&nbsp;created&nbsp;2d&nbsp;array&nbsp;the&nbsp;array2D&nbsp;has&nbsp;size&nbsp;[height&nbsp;x&nbsp;width] &nbsp;&nbsp;&nbsp;&nbsp;int**&nbsp;create2DArray(unsigned&nbsp;height,&nbsp;unsigned&nbsp;width) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int**&nbsp;array2D&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array2D&nbsp;=&nbsp;new&nbsp;int*[height]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;h&nbsp;=&nbsp;0;&nbsp;h&nbsp;<&nbsp;height;&nbsp;h++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array2D[h]&nbsp;=&nbsp;new&nbsp;int[width]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;w&nbsp;=&nbsp;0;&nbsp;w&nbsp;<&nbsp;width;&nbsp;w++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;fill&nbsp;in&nbsp;some&nbsp;initial&nbsp;values &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;(filling&nbsp;in&nbsp;zeros&nbsp;would&nbsp;be&nbsp;more&nbsp;logic,&nbsp;but&nbsp;this&nbsp;is&nbsp;just&nbsp;for&nbsp;the&nbsp;example) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array2D[h][w]&nbsp;=&nbsp;w&nbsp;+&nbsp;width&nbsp;*&nbsp;h; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;array2D; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;main() &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("Creating&nbsp;a&nbsp;2D&nbsp;array2D\n"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\n"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;height&nbsp;=&nbsp;15; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;width&nbsp;=&nbsp;10; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int**&nbsp;my2DArray&nbsp;=&nbsp;create2DArray(height,&nbsp;width); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("Array&nbsp;sized&nbsp;[%i,%i]&nbsp;created.\n\n",&nbsp;height,&nbsp;width); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;print&nbsp;contents&nbsp;of&nbsp;the&nbsp;array2D &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("Array&nbsp;contents:&nbsp;\n"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;h&nbsp;=&nbsp;0;&nbsp;h&nbsp;<&nbsp;height;&nbsp;h++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;w&nbsp;=&nbsp;0;&nbsp;w&nbsp;<&nbsp;width;&nbsp;w++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%i,",&nbsp;my2DArray[h][w]); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\n"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;important:&nbsp;clean&nbsp;up&nbsp;memory &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\n"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("Cleaning&nbsp;up&nbsp;memory...\n"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(&nbsp;&nbsp;h&nbsp;=&nbsp;0;&nbsp;h&nbsp;<&nbsp;height;&nbsp;h++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]&nbsp;my2DArray[h]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]&nbsp;my2DArray; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my2DArray&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("Ready.\n"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;}

拉丁的传说

该代码不起作用,如果我们修复它,它不会帮助你学习正确的C ++。如果你做了不同的事情,那就更好了。原始数组(尤其是多维数组)很难正确地传递到函数和从函数传递。我认为从一个代表数组但可以安全复制的对象开始,你会好得多。查找文档std::vector。在您的代码中,您可以使用vector<vector<int> >或者您可以使用36个元素模拟二维数组vector<int>。

慕标琳琳

使用指针的更好的替代方法是使用指针std::vector。这会处理内存分配和释放的细节。std::vector<std::vector<int>>&nbsp;create2DArray(unsigned&nbsp;height,&nbsp;unsigned&nbsp;width){ &nbsp;&nbsp;&nbsp;return&nbsp;std::vector<std::vector<int>>(height,&nbsp;std::vector<int>(width,&nbsp;0));}
打开App,查看更多内容
随时随地看视频慕课网APP