| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4541 人关注过本帖, 1 人收藏
标题:可以用函数返回一个数组吗?
只看楼主 加入收藏
zhaoqiang053
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-5-17
收藏(1)
 问题点数:0 回复次数:10 
可以用函数返回一个数组吗?
int trsmat(int a[][5])
{int b[5][1];
int i;
int j;
for(i=0;i<1;i++)
for(j=0;j<5;j++)
b[j][i]=a[i][j];
return b;
}这个函数对吗?
编译后的错误如下,给指点一下吧,谢谢 啊!
error C2440: 'return' : cannot convert from 'int [5][1]' to 'int'
搜索更多相关主题的帖子: 函数 
2006-05-22 12:53
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
回复:(zhaoqiang053)可以用函数返回一个数组吗?
以下是引用zhaoqiang053在2006-5-22 12:53:00的发言:
int trsmat(int a[][5])
{int b[5][1];
int i;
int j;
for(i=0;i<1;i++)
for(j=0;j<5;j++)
b[j][i]=a[i][j];
return b;
}这个函数对吗?
编译后的错误如下,给指点一下吧,谢谢 啊!
error C2440: 'return' : cannot convert from 'int [5][1]' to 'int'

就像编译器报的错误:不能从int [5][1]强制转换为int类型。
代你修改一下:
int** trsmat(int a[][5]) //二维数组与二级指针相当,故添**
{static int b[5][1]; //要加static以延长b[][]的“生命”
int i;
int j;
for(i=0;i<1;i++)
for(j=0;j<5;j++)
b[j][i]=a[i][j];
return b;
}


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-22 13:32
a402730324
Rank: 5Rank: 5
等 级:贵宾
威 望:18
帖 子:1233
专家分:0
注 册:2005-12-1
收藏
得分:0 
这么样是不行的,返回的是一个指针,必须用指针函数。

敢犯强汉者,虽远必诛!——陈汤 不知吾辈何时方能吐出此豪言壮语?
2006-05-22 13:34
my1286
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-5-15
收藏
得分:0 

不懂,好难


2006-05-22 13:36
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
//返回2维确有难度,那就返回1维吧
#include <stdio.h>
int* trsmat(int a[][5])
{ static int b[5][3];
int i, j;
for(i=0;i<3;i++)
for(j=0;j<5;j++)
b[j][i]=a[i][j];
return b[0];
}
int main()
{
int u[3][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int *v,i,j;
v = trsmat(u);
for(i=0;i<5;i++,printf("\n"))
for(j=0;j<3;j++)
printf("%3d",v[3*i+j]);
return 0;
}

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-22 13:56
金为床兮银为椅
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2006-3-20
收藏
得分:0 
将数组作为函数返回值非法!

努力学习C、C++、LINUX、ORACLE、ENGLISH,累死为止。
2006-05-22 13:58
金为床兮银为椅
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2006-3-20
收藏
得分:0 
楼上也只是返回数组的第一个元素的指针而已,并非可以返回数组

努力学习C、C++、LINUX、ORACLE、ENGLISH,累死为止。
2006-05-22 13:59
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
以下是引用金为床兮银为椅在2006-5-22 13:59:00的发言:
楼上也只是返回数组的第一个元素的指针而已,并非可以返回数组

汗...你知道为什么 scanf("%s",a); 可以不用写&吗..不就是因为所谓数组就是指其数组第一个元素的指针吗?

不过我想5楼也有一点不成问题的问题.

我想还是写成 return b; 比较好吧..虽然函数强制返回了指针.不过很容易叫人误解.

如果你有别的特别的意思(故意写成那样) 那就是我多嘴了.


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-05-22 15:11
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
return b[0]; 相当于 return (int *)b;

return b相当于二级指针和函数返回值类型不符

返回整个数组?显然只可以返回一个指针来引用这个数组
否则只能写一个类来实现

叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-05-22 15:48
金为床兮银为椅
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2006-3-20
收藏
得分:0 

你汗,我倒,返回指针是返回数组吗?你只是利用返回指针找到数组而已。


努力学习C、C++、LINUX、ORACLE、ENGLISH,累死为止。
2006-05-22 15:52
快速回复:可以用函数返回一个数组吗?
数据加载中...
 
   



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

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