函数如何返回一个二维数组的地址

展望未来 2012-04-28 12:02:49
大家听起来可能觉得不屑一顾,其实不然
在一个函数里找出了一个二维数组的位置比如a[3][5],然后如何才能返回3和5,什么办法能实现???
不要全局变量,大家帮一下,一旦有回答,迅速结贴
...全文
585 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
evencoming 2012-04-28
  • 打赏
  • 举报
回复
回帖慢了..
下次得眼疾手快了
evencoming 2012-04-28
  • 打赏
  • 举报
回复
typedef struct Point_
{
int x;
int y;
}Point;
Point GetPosition()
{
Point p;
p.x=3;
p.y=5;
return p;
}
pathuang68 2012-04-28
  • 打赏
  • 举报
回复
办法有很多。请参考下面代码(一个例子)

#include <iostream>
using namespace std;

/*
some_fun有两个传出参数row和col,返回值为数组地址

*/
int* some_fun(int* row, int* col)
{
int k = 0;
int* arr = (int*)malloc(3 * 5 * sizeof(int));
for(int i = 0; i < 3; ++i)
{
for(int j = 0; j < 5; ++j)
{
*(arr + i * 5 + j) = k++;
}
}

*row = 3;
*col = 5;

return arr;
}

int main(int argc, char** argv)
{
int row, col;
int* arr = some_fun(&row, &col);
for(int i = 0; i < row; ++i)
{
for(int j = 0; j < col; ++j)
{
printf("%d\t", *(arr + i * 5 + j));
}
printf("\n");
}
free(arr);
return 0;
}
tbooka 2012-04-28
  • 打赏
  • 举报
回复
你的意思是要返回两个值吗?
可以定义一个结构体

typedef struct {
int x;
int y;
}location;

函数值返回一个location变量

或者用函数的参数带回来,只是要传地址进去

void function(int* array, int* x, int* y)
{
//...
}
展望未来 2012-04-28
  • 打赏
  • 举报
回复
顶一下,大家看到了就帮帮忙吧,第一次做人家对战五子棋,我还是个大一的学生,伤不起……
自信男孩 2012-04-28
  • 打赏
  • 举报
回复
LZ是要返回数组的地址还是要返回数组的长度,包括行数和列数。
如果你是在一个函数内部定义的静态数组,你即使返回数组的地址也是没有用的,因为静态数组是在栈上申请的,一旦函数调用结束,栈上的空间就会被释放掉。如果是要返回数组的长度,那么你可以尝试通过指针参数,传变量的地址可以获取数组的长度。
dos5gw 2012-04-28
  • 打赏
  • 举报
回复
int func(int *row,int *col),
如果是C++, 用引用也可以
展望未来 2012-04-28
  • 打赏
  • 举报
回复
巩固了一些知识,很感谢大家~~~~~~

69,371

社区成员

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

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