OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4921|回复: 10

急!!!!!当返回值是一个数组的时候,在主函数中怎么把这个返回值赋给一个数组

[复制链接]

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2016-4-21
在线时间
18 小时
发表于 2016-9-29 12:04:15 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13102
金钱
13102
注册时间
2012-11-26
在线时间
3811 小时
发表于 2016-9-29 12:04:16 | 显示全部楼层
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2016-4-21
在线时间
18 小时
 楼主| 发表于 2016-9-29 12:08:24 | 显示全部楼层
在线等。。。。。。。
回复

使用道具 举报

2

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2016-8-4
在线时间
20 小时
发表于 2016-9-29 13:58:50 | 显示全部楼层
数组只能逐个赋值,或者使用memmove(&数组1, &数组2[x], 4); 意思就是将数组2下标为X的那个字节开始的4个字节,赋值到数组1的起始字节开始的4字节,非常方便
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-9-29 14:08:10 | 显示全部楼层
我第一次听说能返回数组的,返回的是一个指针吧,如果是void*的话,你把他强制转换成他对于的指针就好了
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2016-4-21
在线时间
18 小时
 楼主| 发表于 2016-9-29 14:16:43 | 显示全部楼层

能不能用程序简单的给我写一下,多谢了
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2016-4-21
在线时间
18 小时
 楼主| 发表于 2016-9-29 14:18:15 | 显示全部楼层
yuandong5251 发表于 2016-9-29 13:58
数组只能逐个赋值,或者使用memmove(&数组1, &数组2[x], 4); 意思就是将数组2下标为X的那个字节开始的4个字 ...

第一个数组是个返回值,要从返回值里把结果提出来
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2016-4-21
在线时间
18 小时
 楼主| 发表于 2016-9-29 14:19:31 | 显示全部楼层
yuandong5251 发表于 2016-9-29 13:58
数组只能逐个赋值,或者使用memmove(&数组1, &数组2[x], 4); 意思就是将数组2下标为X的那个字节开始的4个字 ...

逐个赋值的话,结果不对
回复

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2016-9-29 15:00:47 | 显示全部楼层
本帖最后由 ianhom 于 2016-9-29 15:02 编辑

提供一个不推荐的非主流做法:把数组放到结构体里,函数返回结构体实体。不过执行的效率和代码的size没有用指针有优势。
[mw_shl_code=c,true]
#define MAX_NUM    (5)

typedef struct _ARRAY_STRUCT
{
    unsigned char array[MAX_NUM];    //结构体只包含一个数组
}ARRAY_STRUCT;

ARRAY_STRUCT Test_fn()
{
    ARRAY_STRUCT Temp;
    int i;
    for(i = 0; i < MAX_NUM; i++)
    {
        Temp.array = i+1;  //向临时数组中写入1,2,3,4,5
    }
    return Temp;                //返回只包含数组的结构体实体
}

int main (void)
{     
    int i;
    ARRAY_STRUCT test;
    test = Test_fn();           //把包含只数组的结构体实体返回给另一个只包含数组的结构体
    for(i = 0; i < MAX_NUM; i++)
    {
        printf("%d\n",test.array);   //打印出1,2,3,4,5
    }
}
[/mw_shl_code]
机器生汇编,汇编生B,B生C,C生万物.... 经过长期对C语言的研究,目前只有两个方面不懂:这也不懂,那也不懂
https://github.com/ianhom
回复

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2013-11-28
在线时间
31 小时
发表于 2016-9-29 15:06:31 | 显示全部楼层
指针是最好的方法
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2016-4-21
在线时间
18 小时
 楼主| 发表于 2016-9-29 15:13:19 | 显示全部楼层
karaxiaoyu 发表于 2016-9-29 15:06
指针是最好的方法

能不能用程序简单的给我写一下,多谢了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 16:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表