| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3555 人关注过本帖
标题:【函数】返回二维数组的函数怎么声明?
只看楼主 加入收藏
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
结帖率:96.08%
收藏
已结贴  问题点数:10 回复次数:15 
【函数】返回二维数组的函数怎么声明?
【RT】

感觉突然好像脑袋抽了,不知道怎么写了?

2013-08-17 20:05
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
int **function();

int [][number]function();

int *[number]function();

以上是我脑袋抽风的时候自己构造出来的,然后突然就不知道该怎么写这个声明了。。。

(我想返回一个3*3的矩阵)


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-08-17 20:08
awisebird_
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:82
专家分:185
注 册:2013-7-6
收藏
得分:0 
int **function();//这个应该可以吧,没有试过吗?
2013-08-17 20:21
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:10 
直接返回int *就行,之后再强制转换成int[][3]用。

但这样的方式只能返回一个指针,数组实体要么通过参数传递给函数,要么在函数内动态申请内存在函数外手工释放。

想返回一个数组实体可以将数组封装在结构中返回。

重剑无锋,大巧不工
2013-08-17 20:25
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
我上面说的我都试过了,貌似都是不对的。


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-08-17 20:25
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
回复 4楼 beyondyf
意思就是说,函数的返回值不能直接是二维数组,对吗?

学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-08-17 20:27
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
回复 6楼 蚕头燕尾
在C语言里,对。

重剑无锋,大巧不工
2013-08-17 20:30
awisebird_
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:82
专家分:185
注 册:2013-7-6
收藏
得分:0 
以下是引用beyondyf在2013-8-17 20:25:15的发言:

直接返回int *就行,之后再强制转换成int[][3]用。

但这样的方式只能返回一个指针,数组实体要么通过参数传递给函数,要么在函数内动态申请内存在函数外手工释放。

想返回一个数组实体可以将数组封装在结构中返回。

有道理
2013-08-17 20:30
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
回复 7楼 beyondyf
说话好严密。

那请问在C++里有什么比较常见,比较好用的办法吗?(其实我写的就是C++的代码,因为题目不难,基本没有用到class)

我先试下那个强制类型转换的办法,听起来好像挺有道理的。反正返回值就是返回一个地址就是了,到时候怎么用还是可以商榷的对吧。


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-08-17 20:36
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
C++在这点上C没有区别,为了保证程序的效率它也将内存管理交给程序员自己完成。

通常的做法仍是使用参数将数组指针传递给函数,函数返回的还是这个传入的指针,为的是方便级联运算。

在C#、JAVA这样的语言里由于数组本身就被当作对象,内存由系统自动管理,所以可以直接返回数组。

重剑无锋,大巧不工
2013-08-17 20:44
快速回复:【函数】返回二维数组的函数怎么声明?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011988 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved