请问C语言两个结构体如何将快速的赋值过去

2019-07-14 13:10发布



请问,我有结构体 两个结构体,如何将快速的赋值过去。

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结构体内相同成员名的成员就已经赋值了?如果用共同体的话,要如何实现?;还是说有其他好的方法。麻烦各位大神指点指点小弟。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
ctwewer
1楼-- · 2019-07-14 23:59
 精彩回答 2  元偷偷看……
jiecai5388
2楼-- · 2019-07-15 00:38
C 语言可不支持这样的连续操作
jiecai5388
3楼-- · 2019-07-15 06:31
union 是个很好的办法,但你多出来那个成员最好在底部;
而且这涉及到成员对齐问题,可以看看用 pack预编译指令能否解决。
jiecai5388
4楼-- · 2019-07-15 11:16
示例:
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就跟着一样了;记住他们在内存里是共享一个存贮单元的,你修改了其中任何一个,另外一个也跟着一样修改了。
daitz
5楼-- · 2019-07-15 14:24
可以自己在mdk里面写代码测试 ,在线调试 ,就知道结果
jr3367
6楼-- · 2019-07-15 18:42
 精彩回答 2  元偷偷看……

一周热门 更多>