2736946915 发表于 2021-9-21 00:50:09

memcpy

typedef struct MsgInfo
        {
                MSG                msg;
                LRESULT result;
                HANDLE        hEvent;        //句柄

                MsgInfo(MSG m)
                {
                        result = 0;
                        memcpy(&msg, &m, sizeof(MSG));
                        hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
                }

                MsgInfo()
                {
                        result = 0;
                        memset(&msg, 0, sizeof(MSG));
                        hEvent = INVALID_HANDLE_VALUE;
                }

                MsgInfo(const MsgInfo& m)
                {
                        result        = m.result;
                        memcpy(&msg, &m.msg, sizeof(MSG));
                        hEvent        = m.hEvent;
                }


        }MSGINFO;

如上,为什么大家都喜欢用"memcpy",而不是直接用"="?比如说memcpy(&msg, &m.msg, sizeof(MSG));写成msg = m.msg,这样和memcpy有什么区别吗?这样写的目的是什么?

jhq999 发表于 2021-9-21 06:41:14

本帖最后由 jhq999 于 2021-9-21 06:48 编辑

数组怎么用"="?struct a
        {
                int i;
        };
        struct b
        {
                int i;
        };
a aa;
aa.i=1;
b bb;
//怎么让bb=aa?
//却可以
mempy(&bb,&aa,sizeof(aa));

rt3 发表于 2021-9-21 13:48:55

本帖最后由 rt3 于 2021-9-21 13:55 编辑

用= 赋值 技术上是能做到的,通常的办法是结合循环对数组中的所有成员逐个赋值,但还是很麻烦。
不用函数和循环只用=对数组赋值是做不到的;

2736946915 发表于 2021-9-21 23:19:30

jhq999 发表于 2021-9-21 06:41
数组怎么用"="?

重载"="

2736946915 发表于 2021-9-21 23:20:15

rt3 发表于 2021-9-21 13:48
用= 赋值 技术上是能做到的,通常的办法是结合循环对数组中的所有成员逐个赋值,但还是很麻烦。
不用函数 ...

可以用重载,便于观赏

jhq999 发表于 2021-9-22 06:42:56

2736946915 发表于 2021-9-21 23:19
重载"="

然后还是用循环赋值,画蛇添足

2736946915 发表于 2021-9-22 12:04:41

jhq999 发表于 2021-9-22 06:42
然后还是用循环赋值,画蛇添足

观赏性高

晴雨皆宜 发表于 2021-9-22 12:28:47

开卷有益,多多益善···
页: [1]
查看完整版本: memcpy