完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请问,我有结构体 两个结构体,如何将快速的赋值过去。 typedef struct { unsigned char A1[150]; unsigned char A2[100]; unsigned long int A3[200]; unsigned short int A4[100]; unsigned long int A5[300]; }ST_ONE; typedef struct { unsigned char A1[150]; unsigned char A2[100]; unsigned long int A3[200]; unsigned long int A3_0[100]; // 增加一个成员A3_0 unsigned short int A4[100]; unsigned long int A5[300]; }ST_TWO; ST_ONE stOne; ST_TWO stTwo; 请问,有什么办法,使得stOne,和stTwo 两个结构体,相同的成员名赋值为一样的,而结构体stTwo多出来的 一个成员A3_0,我可以再另行赋值。 是否可以用共同体?这样使得stOne结构体 在一赋值的时候, stTwo结构体内相同成员名的成员就已经赋值了?如果用共同体的话,要如何实现?;还是说有其他好的方法。麻烦各位大神指点指点小弟。 |
|
相关推荐
15个回答
|
|
union 其实就是占用同一块内存,在共用体里边定义一个与结构体等长的char数组,数组里边每个字节对应结构体从上到下的字节。按照结构体里边每个元素的字节数从stOne赋值值stTwo。
|
|
|
|
|
|
|
|
C 语言可不支持这样的连续操作
|
|
|
|
|
|
|
|
示例:
union { typedef struct { unsigned char A1[150]; unsigned char A2[100]; unsigned long int A3[200]; unsigned short int A4[100]; unsigned long int A5[300]; }ST_ONE; typedef struct { unsigned char A1[150]; unsigned char A2[100]; unsigned long int A3[200]; unsigned long int A3_0[100]; // 增加一个成员A3_0 unsigned short int A4[100]; unsigned long int A5[300]; }ST_TWO; } 但应该把TWO的那个多出来的放在底部,这样你对TWO进行初始化后,ONE就跟着一样了;记住他们在内存里是共享一个存贮单元的,你修改了其中任何一个,另外一个也跟着一样修改了。 |
|
|
|
可以自己在mdk里面写代码测试 ,在线调试 ,就知道结果
|
|
|
|
同意uzslm
|
|
|
|
用联合体union, 不过长度要设为等长,位置要相对应起来,这样给一个变量赋了值,另一个也得到了相同的值
|
|
|
|
就这个case来说,不一定非要等长;基本原则来说就是按照顺序,变量类型要一致
|
|
|
|
先一字节对齐,把新增的放在最下边,memcpy
|
|
|
|
|
|
|
|
|
|
|
|
union 其实就是占用同一块内存,在共用体里边定义一个与结构体等长的char数组,数组里边每个字节对应结构体从上到下的字节。按照结构体里边每个元素的字节数从stOne赋值值stTwo。
|
|
|
|
个人觉得可以用指针强制类型转换,大致思路如下
先定义两个结构体指针,分别指向两个结构体的首地址; 再强制将两个指针转换为uint8类型 用for循环逐个读取并幅值 ========= 个人愚见,勿拍砖 |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计
950 浏览 0 评论
2360 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2159 浏览 3 评论
4791 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2306 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 15:26 , Processed in 1.195638 second(s), Total 103, Slave 84 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号