0

我有一个名为 message 的结构:

typedef unsigned char messageType;
struct message{
    message() : val(0), type(home),nDevice(0) {}
    messageType type;
    _int32 val;
    char nDevice;
};

我有一个指向该结构的指针:

message* reply;

我怎样才能得到reply.val的地址,以便我可以memcpy到它?例如:

    memcpy(inBuf+2,address here,4);
4

3 回答 3

5
memcpy(inBuf+2, &reply->val, sizeof(reply->val));

会这样做,因为 of 的优先级->高于 address-of &

如果您不确定运算符优先级,只需使用括号,可读性更重要:

memcpy(inBuf+2, &(reply->val), sizeof(reply->val));

感谢@DyP 的评论,请注意它sizeof(reply->val)比文字更好用4

于 2013-09-17T02:56:10.213 回答
3

试试&(reply->val)

但是请注意,编译器可以向结构添加填充,这可能会破坏您的计划。

于 2013-09-17T02:51:19.227 回答
2
memcpy(&(reply->val), address, sizeof(address))
于 2013-09-17T02:54:16.270 回答