| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 17705 人关注过本帖
标题:C++中函数怎么返回一个二维数组。指针怎么指向二维数组?
只看楼主 加入收藏
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
我写的类型匹配可以看下,然后关于数组退化的也看下,你就会清楚了!!!你也知道我说的对不对了///

樱花大战,  有爱.
2008-01-10 12:37
VanHorn
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2008-1-8
收藏
得分:0 
兄弟我初来咋到,对论坛里很多东西不熟悉,你写的找到了。很感谢。

[[italic] 本帖最后由 VanHorn 于 2008-1-10 14:01 编辑 [/italic]]
2008-01-10 13:57
VanHorn
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2008-1-8
收藏
得分:0 
看了你写的帖子之后,我觉得C++中二维以上的数组是个鸡肋。
    一维数组很好,因为指针指向一维数组后可以方便的操作一维数组,而二维数组的指针纯粹就是用来指的,至少我知道函数没法返回二维数组(*)[]指针类型。
    在我30楼的帖子里发生的现象也挺匪夷所思的,直接用二维指针指一个取地址的二维数组首地址不行,而用一个二维指针指一个取地址而返回地址的函数是可以的。总之我觉得,在C++中,在函数不能返回数组的情况下,不能用一维以上相应维数的指针指向相应维数的数组,这是一件很不方便的事。
    三维数组用什么指针指我就更没见过了。
2008-01-10 16:09
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
对于传递数组到函数的情况要加一个num变量,就是为了得到数组的大小,也就是边界...因为一维数组会退化为指针..在线性排列的内存中它可以随意移动....于是便丢失边界,可能出现越界...所以要+num......上次和我闹的那位....我只能

樱花大战,  有爱.
2008-01-10 16:12
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
回复 25# 的帖子
你的做法不道德~~~怎么会返回局部变量!?

樱花大战,  有爱.
2008-01-10 16:55
VanHorn
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2008-1-8
收藏
得分:0 
你是说我在一楼的帖子吗?那只是个示意,我想那样做,可是不行,所以来这里求助。如果函数可以返回有界的二维数组,形式应该怎么写呢?
    刚才我又测试了一下前面楼的代码,发现二维数指针指一个取地址而返回地址的函数是不可以的。例如:
#include <iostream>
using namespace std;
int* f()
{
        int arr[2][3] = {{1,2,3}, {7,8,9}};
        return arr[0];
}

int main()
{
        int **p=NULL,*p1=NULL;
         
        p1=f();//这是可以的。
        p=&(p1);//这是可以的,
        p=&(f());//这是不可以的。这是为什么啊?类型匹配也不能指。

        cout << *p<< endl;
      
        return 0;
}

[[italic] 本帖最后由 VanHorn 于 2008-1-10 17:08 编辑 [/italic]]
2008-01-10 17:07
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
&(f())这个类型是int (*)[N];  p类型是int **; 不匹配啊!!

樱花大战,  有爱.
2008-01-10 17:22
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
不用去讨论这个..

[[italic] 本帖最后由 中学者 于 2008-1-10 17:25 编辑 [/italic]]

樱花大战,  有爱.
2008-01-10 17:24
linsua
Rank: 1
等 级:新手上路
帖 子:275
专家分:0
注 册:2008-1-2
收藏
得分:0 
boost::multi_array

如果你对我的话感到再明白不过 那恐怕你是误解了我的意思
2008-01-10 17:25
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 


[[italic] 本帖最后由 中学者 于 2008-1-10 17:35 编辑 [/italic]]

樱花大战,  有爱.
2008-01-10 17:34
快速回复:C++中函数怎么返回一个二维数组。指针怎么指向二维数组?
数据加载中...
 
   



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

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