C语言的函数如何返回二维数组,并获取返回的二维数组大小

I'mWiki 2015-08-23 12:21:11

public int[][] getInfo() {
int[][] result = new int[10][20];
return result;
}
public void main() {
int[][] result = getInfo();
System.out.println("结果长度:" + result.length);
for (int i = 0; i < result.length; i++) {
for (int j = 0; j < result.length; j++) {
System.out.println(result[i][j]);
}
}
}

上面是一段java的代码,功能就是获取返回的二维数组,并输出二维数组的大小,并遍历数组的内容,前提是我并不知道返回来得数组大小。
如何把它翻译成C语言?
...全文
1258 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
二班的码农 2015-08-23
  • 打赏
  • 举报
回复
你加两个参数(定义为指针或引用)用来返回数组的宽度和维数不就行了
二班的码农 2015-08-23
  • 打赏
  • 举报
回复
引用 2 楼 taoweiji2008 的回复:
[quote=引用 1 楼 ant2012 的回复:] 你加两个参数(定义为指针或引用)用来返回数组的宽度和维数不就行了
我是从java过来的,不怎么会写C,希望你能够帮帮忙翻译一下。[/quote] int** getInfo(int* height, int* length) { *height = 10; *length = 20; int **pp = (int**)malloc(*height * sizeof(int*)); for(int i = 0; i < *height; i++) { pp[i] = (int*)malloc(*length * sizeof(int)); } return pp; } int main() { int i, height, length; int** result = getInfo(&height, &length); printf("结果长度:%d\n", height); for(i = 0; i < height; i++) { for(int j = 0; j < length; j++) { printf("%d\n", result[i][j]); } } for(i = 0; i < height; i++) { free(result[i]); } free(result); result = NULL; return 0; }
xiaoxuhao 2015-08-23
  • 打赏
  • 举报
回复
C语言没有JAVA那么灵活,像你的这个例子,如果用C语言实现还是很麻烦的,需要注意这几方面: 1、数组指针的传递; 2、数组的两个维度需要用单独的变量记录; 3、C语言动态申请的内存需要手动释放,而且动态二维数组的申请释放比较特殊; 因为这么搞比较麻烦,所以C语言一般不这么搞, 如果你的二维数组不大,还不如直接定义成全局变量。 没必要为了灵活,折腾死自己,写着费劲,也难以维护。 另外你的JAVA代码有一处似乎有问题,第二个for循环应该不能用result.length,而应该用result[0].length吧:

for (int j = 0; j < result[0].length; j++)
I'mWiki 2015-08-23
  • 打赏
  • 举报
回复
引用 1 楼 ant2012 的回复:
你加两个参数(定义为指针或引用)用来返回数组的宽度和维数不就行了
我是从java过来的,不怎么会写C,希望你能够帮帮忙翻译一下。

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧