C语言中怎样使用返回指针的函数来表示数组?

int**x(){intarray[2][3]={{1,3,5},{2,4,6}};returnarray;}怎么调用x[1][1]?比如*(*(a+1)+1)表示a[1... int **x() {
int array[2][3] = {{1,3,5},{2,4,6}};
return array;
}

怎么调用x[1][1]?
比如*(*(a + 1) + 1)表示a[1][1],但x[1][1]呢?
展开
 我来答
jingwei668
2012-01-26
知道答主
回答量:3
采纳率:0%
帮助的人:4850
展开全部
如下:
int ** px = NULL;
px = x();
px[1][1]即为你所说的x[1][1],肯定不能直接x[1][1]的,因为你已经把 x定义为函数了!

而且,要注意,你在x函数里临时创建的数组空间,会随着函数退出而撤销,因此要使返回的指针px有效,必须把int array[2][3] = {{1,3,5},{2,4,6}};提出来,作为全局空间。否则会出错的。
追问
#include 
#include
#include

int **array;
int **play();

int main() {
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 5; ++j)
array[i][j] = i + j + i * j - 1;
int **px = NULL;
px = play();
//std::cerr << array[1][1] << std::endl;
std::cerr << px[1][1] << std::endl;
return 0;
}
int **play() {
return array;
}
编译不错但运行错误?
yu2212
2012-01-28 · TA获得超过2391个赞
知道大有可为答主
回答量:3915
采纳率:0%
帮助的人:2928万
展开全部
返回一个局部变量数组是什么意思?

函数在调用完毕返回后,局部变量的空间已经被回收。
这时候你还要用他?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黄海海域面积
2012-01-26 · TA获得超过169个赞
知道答主
回答量:163
采纳率:0%
帮助的人:94.8万
展开全部
int **x()是函数,返回类型为int **,所以不能调用x[1][1],而且二维数组是不能直接返回地址的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4694038
2012-01-26
知道答主
回答量:4
采纳率:0%
帮助的人:6515
展开全部
不能访问x数组,因为array是局部变量,在调用完后array的空间会被销毁。如果你要用数组的空间,你可以传入一个数组变量,再把它返回。或者用malloc分配一个空间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xlzxlz2
2012-01-27
知道答主
回答量:4
采纳率:0%
帮助的人:7317
展开全部
同意 jingwei668
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式