| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1849 人关注过本帖
标题:要想得到多个返回值,应该怎么弄
只看楼主 加入收藏
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:2 
回复 9楼 赵疯子
兄弟,进入函数时定义数组,然后返回数组?这话能说得再细点吗?

总有那身价贱的人给作业贴回复完整的代码
2013-08-20 11:05
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:2 
大概明白9楼的意思是先创建一个结构体或者数组什么的,总之能存好多数据的东东。。把该指针传递给被调用函数,然后就能在函数体的范围内对该组数据做各种变更了。

从不知道到知道,到知道自己不知道,成长的道路上脚步深深浅浅
2013-08-20 11:14
赵疯子
Rank: 8Rank: 8
来 自:dream
等 级:蝙蝠侠
威 望:2
帖 子:365
专家分:737
注 册:2013-5-5
收藏
得分:0 
大概的意思就是说,在调用函数之外创建指针数组,用来接收返回值的数组头,在进入函数之后创建同样大小的数组,将所需返回的值存入到该数组中,一次性返回一个数组的头,这样该函数外部接收的数据就是该数组本身的数据,这是我自己想到的,如果不对或者没法实现的话,就当我没说
2013-08-20 11:24
软件猿
Rank: 2
来 自:南方
等 级:论坛游民
帖 子:21
专家分:20
注 册:2013-5-24
收藏
得分:2 
求真相求科普。
2013-08-20 11:45
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 13楼 赵疯子
看见最后那句话就不用多嘴了

总有那身价贱的人给作业贴回复完整的代码
2013-08-20 11:47
赵疯子
Rank: 8Rank: 8
来 自:dream
等 级:蝙蝠侠
威 望:2
帖 子:365
专家分:737
注 册:2013-5-5
收藏
得分:0 
回复 15楼 embed_xuel
我是看到这个才这么解释的,你来解释一下http://zhidao.baidu.com/link?url=cMrX-TbaYPJDOeWYYTkU5oNPCyV1cyMz3wv4fJoAon-iK48FNxBUXggz0BCpvikp35i_6HXnvdNwhx-GPZqM__
2013-08-20 11:50
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 16楼 赵疯子
你看到的代码是c++的。里面的new和delete干嘛用的呢?你想一想?能不能直接套用到c语言里吗?

总有那身价贱的人给作业贴回复完整的代码
2013-08-20 12:04
智商低
Rank: 2
来 自:轮回
等 级:论坛游民
帖 子:5
专家分:12
注 册:2013-7-16
收藏
得分:2 
程序代码:
#include <stdio.h>

int a[2] = {1, 2};    //仍全局

int *xxx()
{
    return a;
}

int main()
{
    printf("%d %d\n", *xxx(), *((xxx)()+1));
    return 0;
}
试了一下,感觉告诉我不行,如果试图用数组来返回,但是函数中的局部变量存放在stack中,函数执行完成之后会自动释放,因此将局部变量的指针作为返回值行不通!

智商不高...!
2013-08-20 12:23
赵疯子
Rank: 8Rank: 8
来 自:dream
等 级:蝙蝠侠
威 望:2
帖 子:365
专家分:737
注 册:2013-5-5
收藏
得分:0 
刚才我想了想,你说的没错,确实利用指针数组无法实现,但是利用传址方式可以轻松实现,你看看这个代码,他的意思是说在main函数中P数组的值为0,传址到函数中在函数修改数组地址的值,这样可以存储多个返回值了吧?
程序代码:
#include<stdio.h>
void h(int _p[20])
{
    _p[0]=2;_p[1]=2;
}
main()
{
    int p[20]={0};
    h(p);
    printf("%d\t%d\n",p[0],p[1]);
}
2013-08-20 12:32
赵疯子
Rank: 8Rank: 8
来 自:dream
等 级:蝙蝠侠
威 望:2
帖 子:365
专家分:737
注 册:2013-5-5
收藏
得分:0 
回复 17楼 embed_xuel
不好意思没有看明白就多说了,刚才利用吃饭的时间想了想确实你说的对
2013-08-20 12:33
快速回复:要想得到多个返回值,应该怎么弄
数据加载中...
 
   



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

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