找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2019|回复: 10
收起左侧

关于C语言数组拷贝

[复制链接]
ID:734017 发表于 2024-6-6 19:50 | 显示全部楼层 |阅读模式
函数1    temp arr[20]={};
函数2长度不固定,最大20个元素,以0x33结尾    arr[]={};

把函数2拷贝到函数1去,单片机可以用sizeof函数配合memcpy函数吗。
memcpy是内存复制函数未尝试过在单片机使用。

回复

使用道具 举报

ID:734017 发表于 2024-6-7 22:08 | 显示全部楼层
3212432202 发表于 2024-6-7 17:07
为方便说明,定义两个整型数组a,b,并实现将a中的值赋值到b中。 int a[4] = {1,2,3,4}, b[4];  1、 通过数 ...

sizeof(a)是所有节字数,memcpy(b,a,sizeof(a));可以适用int 和char 是吧,谢谢
回复

使用道具 举报

ID:161164 发表于 2024-6-7 17:43 | 显示全部楼层
yzw846562238 发表于 2024-6-7 13:28
你这个写法不对,memcpy是按字节拷贝的,不需要/sizeof(arr[0])

受教了
回复

使用道具 举报

ID:879348 发表于 2024-6-7 17:18 | 显示全部楼层
自己封装一个就行了,为什么非得用标准的函数处理非标准的问题
回复

使用道具 举报

9#
无效楼层,该帖已经被删除
ID:1124236 发表于 2024-6-7 17:07 | 显示全部楼层
为方便说明,定义两个整型数组a,b,并实现将a中的值赋值到b中。 int a[4] = {1,2,3,4}, b[4];  1、 通过数组遍历,逐个赋值。 定义循环变量int i; for(i = 0; i < 4; i ++) b[i] = a[i]; 该程序功能为遍历数组a,逐个赋值到数组b对应元素中。  2、 借助内存复制函数memcpy,整体赋值。 void *memcpy(void *dst, void *src, size_t size); 这个函数的功能为将src上,大小为size字节的数据赋值到dst上。 调用该函数时需要引用头文件cstring,即 #include 赋值数组的代码为 memcpy(b,a,sizeof(a));
回复

使用道具 举报

ID:1124222 发表于 2024-6-7 16:48 | 显示全部楼层
可以没有任何问题
回复

使用道具 举报

ID:458247 发表于 2024-6-7 13:28 | 显示全部楼层
lkc8210 发表于 2024-6-7 10:01
memcpy(temp_arr,arr,sizeof(arr) / sizeof(arr[0]));

你这个写法不对,memcpy是按字节拷贝的,不需要/sizeof(arr[0])
回复

使用道具 举报

ID:161164 发表于 2024-6-7 10:01 | 显示全部楼层
memcpy(temp_arr,arr,sizeof(arr) / sizeof(arr[0]));
回复

使用道具 举报

ID:458247 发表于 2024-6-7 08:56 | 显示全部楼层
可以用,但是你要保证数组1的长度≥数组2;然后你是要拷贝到0x33那个字节,后面都不拷贝?那这样的话就不能用这个方法了。另外以0x33做结尾是否有点草率,万一你前面的数据中包含了0x33这个字符呢
回复

使用道具 举报

ID:879809 发表于 2024-6-7 06:49 | 显示全部楼层
sizeof只能判断正常的0x0结束符,无法判断楼主自定义的0x33结束符,所以完全不可能。
回复

使用道具 举报

ID:401564 发表于 2024-6-7 01:06 | 显示全部楼层
声明两个结构体,在结构体中声明数组,然后就可以直接用
结构体1 = 结构体2
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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