OpenEdv-开源电子网

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

一段数据保存到另外一个数组

[复制链接]

20

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
605
金钱
605
注册时间
2017-7-14
在线时间
116 小时
发表于 2017-8-15 17:46:35 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 SimpleLife 于 2017-8-15 17:55 编辑

情况:保存数组b的数据,数组b要用来保存新的一组数据的,请问有没有更加快速的写法。
for (i = 0; i<16; i++)
{
        a【i】  = b【i】 ;
    // 这里打不出[、]符号,用【】代替
}







最佳答案

查看完整内容[请看2#楼]

换成u32操作,如果是32位机,可以快一点。一次操作4字节。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165462
金钱
165462
注册时间
2010-12-1
在线时间
2114 小时
发表于 2017-8-15 17:46:36 | 显示全部楼层
换成u32操作,如果是32位机,可以快一点。一次操作4字节。
回复

使用道具 举报

29

主题

100

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2016-12-29
在线时间
100 小时
发表于 2017-8-15 17:48:34 | 显示全部楼层
不会擦除啊  ,下标在变
回复

使用道具 举报

20

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
605
金钱
605
注册时间
2017-7-14
在线时间
116 小时
 楼主| 发表于 2017-8-15 17:50:33 | 显示全部楼层
孤独的流浪者 发表于 2017-8-15 17:48
不会擦除啊  ,下标在变

数组b保存完后,要用来保存新的一组数据的
回复

使用道具 举报

15

主题

317

帖子

0

精华

高级会员

Rank: 4

积分
850
金钱
850
注册时间
2015-2-12
在线时间
350 小时
发表于 2017-8-15 18:13:39 | 显示全部楼层
本帖最后由 csmjmcc 于 2017-8-15 18:15 编辑

可以库函数memcpy
回复

使用道具 举报

22

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
878
金钱
878
注册时间
2014-7-7
在线时间
311 小时
发表于 2017-8-15 19:09:48 | 显示全部楼层
memcpy
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2017-8-15
在线时间
0 小时
发表于 2017-8-15 19:22:48 | 显示全部楼层

void CopyMemory (unsigned char *buf, unsigned char *memory, len)
{
while(len--)
{
*buf++=*memory++;
}
}
把指针*a,数组b和其长度传递进去就行了
回复

使用道具 举报

20

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
605
金钱
605
注册时间
2017-7-14
在线时间
116 小时
 楼主| 发表于 2017-8-15 19:35:58 | 显示全部楼层
csmjmcc 发表于 2017-8-15 18:13
可以库函数memcpy

查看memcpy原函数,发现里面语句比原本我写的for多,执行次数多了一些。用了clock函数,测试不出时间,请问有没有方法实测一下这两个的执行时间?
回复

使用道具 举报

20

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
605
金钱
605
注册时间
2017-7-14
在线时间
116 小时
 楼主| 发表于 2017-8-15 19:37:31 | 显示全部楼层
回复

使用道具 举报

20

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
605
金钱
605
注册时间
2017-7-14
在线时间
116 小时
 楼主| 发表于 2017-8-15 19:37:44 | 显示全部楼层
2026625054 发表于 2017-8-15 19:22
void CopyMemory (unsigned char *buf, unsigned char *memory, len)
{
while(len--)

请看7楼
回复

使用道具 举报

22

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
878
金钱
878
注册时间
2014-7-7
在线时间
311 小时
发表于 2017-8-15 19:39:02 | 显示全部楼层

开个计数器不就知道了
回复

使用道具 举报

15

主题

317

帖子

0

精华

高级会员

Rank: 4

积分
850
金钱
850
注册时间
2015-2-12
在线时间
350 小时
发表于 2017-8-15 20:14:51 | 显示全部楼层
SimpleLife 发表于 2017-8-15 19:35
查看memcpy原函数,发现里面语句比原本我写的for多,执行次数多了一些。用了clock函数,测试不出时间,请 ...

你要的是效率,还是语法简洁?若是要效率,你那方案最佳。库函数考虑的是普遍性、完整性,当然效率低些。所以说,若要效率的话,请用自己狭隘的边界写代码。
回复

使用道具 举报

9

主题

141

帖子

1

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2017-1-3
在线时间
65 小时
发表于 2017-8-15 20:43:09 | 显示全部楼层
写个函数,把b[]作为参数传入,每次B[]获取新值了,然后调用函数把最新的数据取走就行了呗
回复

使用道具 举报

20

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
605
金钱
605
注册时间
2017-7-14
在线时间
116 小时
 楼主| 发表于 2017-8-15 20:47:43 | 显示全部楼层
BJTT 发表于 2017-8-15 20:43
写个函数,把b[]作为参数传入,每次B[]获取新值了,然后调用函数把最新的数据取走就行了呗

我要的是效率
回复

使用道具 举报

20

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
605
金钱
605
注册时间
2017-7-14
在线时间
116 小时
 楼主| 发表于 2017-8-15 20:48:17 | 显示全部楼层
csmjmcc 发表于 2017-8-15 20:14
你要的是效率,还是语法简洁?若是要效率,你那方案最佳。库函数考虑的是普遍性、完整性,当然效率低些。 ...

要的是效率,我的方法基础上,是否有效率更高的方法
回复

使用道具 举报

20

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
605
金钱
605
注册时间
2017-7-14
在线时间
116 小时
 楼主| 发表于 2017-8-15 20:48:35 | 显示全部楼层
感谢以上回帖的伙伴!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-20 17:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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