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

double *mult(double a[LineRow][LineRow],double b[LineRow][LineRow])
{
    double c[LineRow][LineRow]={0};

   /*省略函数功能部分*/

    return c[0];
}

声明如下:

double *mult(double a[LineRow][LineRow],double b[LineRow][LineRow]);

调用如下:

(double *[LineRow])mult(a,b)

//这里的LineRow是宏定义的,等于3


报错如下:

error C2440: “类型转换”: 无法从“double *”转换为“double *[3]

我哪里写错了吗?

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

                                                                                                                    Black Cat      Hello Tomorrow~
2013-08-17 20:56
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 


谢谢b版。

另外我又在想,为什么这样用就是错的:

print((double (*)[LineRow])mult(a,b));

其中:

void print(double t[][LineRow])
{
    for(int i=0;i<LineRow;i++)
    {
        for(int j=0;j<LineRow;j++)
        {
            cout<<t[i][j]<<"\t";
        }
        cout<<endl;
    }

}

而我直接这样写:

    for(int i=0;i<LineRow;i++)
    {
        for(int j=0;j<LineRow;j++)
        {
            cout<<((double (*)[LineRow])mult(a,b))[i][j]<<"\t";
        }
        cout<<endl;
    }
就能得到想要的结果。

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

                                                                                                                    Black Cat      Hello Tomorrow~
2013-08-17 21:32
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
哦。。。。!

thanks



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

                                                                                                                    Black Cat      Hello Tomorrow~
2013-08-17 22:25
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
那我就定义一个全局变量c吧,避免调用print时候在栈里面发生覆盖,也不会出现释放问题了。


谢谢b版啦

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

                                                                                                                    Black Cat      Hello Tomorrow~
2013-08-17 22:34
快速回复:【函数】返回二维数组的函数怎么声明?
数据加载中...
 
   



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

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