找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1926|回复: 19
打印 上一主题 下一主题
收起左侧

C语言把一个数组里面的数据,给另一个数组有哪些办法?

  [复制链接]
跳转到指定楼层
楼主
ID:1043477 发表于 2022-10-24 14:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
先定义数组A[100]={a,b,c...............},B[100]。现在要把数组A里面的数据给数组B。
除了用
for(i=0;i<100;i++)
{
  B[ i]=A[ i];
}这种形式以为,有没有其他速度更快的方式,库函数的方式用不了,用的是51单片机 。,麻烦各位大佬支招。



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:25310 发表于 2022-10-24 17:16 | 只看该作者
void *memcpy(void *dst, void *src, size_t size);
这个函数的功能为将src上,大小为size字节的数据赋值到dst上。
调用该函数时需要引用头文件cstring,即
#include <cstring>
赋值数组的代码为
memcpy(b,a,sizeof(a));
回复

使用道具 举报

板凳
ID:251368 发表于 2022-10-24 17:41 | 只看该作者
int *aa,*bb;
int i = 100;
aa = A;
bb = B;
while(i--)
*bb++ = *aa ++;
指针访问速度更快
回复

使用道具 举报

地板
ID:883242 发表于 2022-10-24 18:12 | 只看该作者
不行,51单片机只有120 bytes内存,你的操作最少需要200bytes,换一个稍微好一点的单片机,比如STM8才行。
回复

使用道具 举报

5#
ID:275826 发表于 2022-10-24 19:53 | 只看该作者
union td
回复

使用道具 举报

6#
ID:275826 发表于 2022-10-24 19:54 | 只看该作者
{char A[100];}
回复

使用道具 举报

7#
ID:275826 发表于 2022-10-24 19:55 | 只看该作者
union td
{char A[100];
  char B[100];
} ss;
回复

使用道具 举报

8#
ID:401564 发表于 2022-10-24 20:04 | 只看该作者
沙发的方法最简单
我个人一般用结构体,懒得打字,结构体声明好之后,就可以像赋值一样的 A = B;了
回复

使用道具 举报

9#
ID:988199 发表于 2022-10-24 20:43 | 只看该作者
可以使用指针创建两个动态链表
回复

使用道具 举报

10#
ID:624769 发表于 2022-10-24 22:16 来自手机 | 只看该作者
一般用dma
回复

使用道具 举报

11#
ID:1034262 发表于 2022-10-25 11:40 | 只看该作者
直接拷贝,或者DMA传输。
回复

使用道具 举报

12#
ID:123289 发表于 2022-10-26 10:53 | 只看该作者
随着你的功力加深,方法就多了。
最快的是DAM方式。
回复

使用道具 举报

13#
ID:195496 发表于 2022-10-27 13:05 | 只看该作者
DMA快,51用指针也行
回复

使用道具 举报

14#
ID:514901 发表于 2022-10-27 14:29 | 只看该作者
char *B;
回复

使用道具 举报

15#
ID:1047187 发表于 2022-10-27 17:24 | 只看该作者
51好像有些没有DMA 用指针吧
回复

使用道具 举报

16#
ID:401564 发表于 2022-10-27 19:08 | 只看该作者
如果在冬夜 发表于 2022-10-27 17:24
51好像有些没有DMA 用指针吧

STC8A8K最新出的有DMA了,但也没认真看,更加没有试过
回复

使用道具 举报

17#
ID:497656 发表于 2022-10-28 14:05 | 只看该作者
定义一个指针,指向A,然后对指针操作。
回复

使用道具 举报

18#
ID:285686 发表于 2022-10-28 17:06 | 只看该作者
int a[];//原来数组
int b[];//需要复制到b
b=a;//就行了。
回复

使用道具 举报

19#
ID:285686 发表于 2022-10-28 20:04 | 只看该作者
tyrl800 发表于 2022-10-24 19:55
union td
{char A[100];
  char B[100];

好手动阀十分撒地方
回复

使用道具 举报

20#
ID:1050683 发表于 2022-11-7 21:49 | 只看该作者

用指针吧,像这个层主这样
int *aa,*bb;
int i = 100;
aa = A;
bb = B;
while(i--)
*bb++ = *aa ++;
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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