| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2610 人关注过本帖
标题:结构体之间传值的问题
只看楼主 加入收藏
tthhzzz
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-1-7
结帖率:0
收藏
已结贴  问题点数:10 回复次数:7 
结构体之间传值的问题
有两个结构略相同的结构体,想将一个的内容赋给另一个,一项一项的赋值感觉好麻烦,想用memcpy,但是不知道该怎么用。
第一个:
typedef struct{
    int Type;               
    ST_MSG Msg;         
    unsigned char Value;      
    unsigned char Slot;      
    void *UserMsg;           
}ST_EM;

typedef struct{
    unsigned char RetCode;
    unsigned char a[256];
    unsigned char b[256];
    unsigned char c[256];
 
    long dd;      
    byte ee[9];            
    byte ff[16];            
    byte gg[5];            
}ST_MAG;

第二个结构体里面的内容比这个多,但包括这些。想用memcpy该怎么赋值呢?将2的值赋给1
搜索更多相关主题的帖子: long void 结构体 
2012-01-07 14:27
hoogle
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2012-1-7
收藏
得分:3 
不知道这样成不成:如果将两者相同部分建立为struct xiangtong
struct 1
{
struct xiangtong xxx;
……
};
struct 2
{
struct xiangtong xxx;
……
};
2->xxx=1->xxx;
2012-01-07 14:53
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:3 
程序代码:
#include <string.h>

typedef unsigned char byte;

#pragma pack(push, 1)

typedef struct {
    unsigned char RetCode;
    unsigned char a[256];
    unsigned char b[256];
    unsigned char c[256];
    long dd;     
    byte ee[9];           
    byte ff[16];           
    byte gg[5];           
}ST_MAG;

typedef struct{
    int Type;              
    ST_MAG Msg;        
    unsigned char Value;     
    unsigned char Slot;      
    void *UserMsg;          
}ST_EM;

#pragma pack(pop)

int main(int argc, char *argv[])
{
    ST_MAG st_mag;
    ST_EM st_em;
    memcpy(&(&st_em)->Msg, &st_mag, sizeof(ST_MAG));
    return 0;   
}

技术问题,请不要以短消息方式提问
2012-01-07 16:35
tthhzzz
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-1-7
收藏
得分:0 
memcpy(&(&st_em)->Msg, &st_mag, sizeof(ST_MAG));中为什么要&(&st_em)这样写呢?
2012-01-07 18:27
linxiaobo
Rank: 2
等 级:论坛游民
帖 子:20
专家分:20
注 册:2012-1-7
收藏
得分:3 
void *memcpy(void *dest, const void *src, size_t n);
memcpy函数的功能是把src指向地址的连续n个字节的数据复制到dest指向的地址。
所以这个函数的前两个参数都是地址(指针)
&st_mag是数据类型为ST_MAG的数据的地址
(&st_em)->Msg也是数据类型为ST_MAG的数据,所以要再加一个&才能变成类型为ST_MAG的地址。即&(&st_em)->Msg
2012-01-07 18:51
Flip
Rank: 2
等 级:论坛游民
帖 子:7
专家分:14
注 册:2012-1-2
收藏
得分:3 
用类可以
2012-01-07 21:11
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
跟类有什么关系,奇怪伐?

技术问题,请不要以短消息方式提问
2012-01-07 21:20
tthhzzz
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-1-7
收藏
得分:0 
受教了,多谢各位
2012-01-08 16:10
快速回复:结构体之间传值的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028447 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved