我有一个名为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(inBuf+2,address here,4);
答案 0 :(得分:5)
memcpy(inBuf+2, &reply->val, sizeof(reply->val));
会这样做,因为->
的优先级高于&
的地址。
如果您不确定运算符优先级,只需使用括号,可读性就更重要了:
memcpy(inBuf+2, &(reply->val), sizeof(reply->val));
感谢@ DyP的评论,请注意,使用sizeof(reply->val)
比使用文字4
更好。
答案 1 :(得分:3)
尝试&(reply->val)
。
请注意,编译器可以向结构添加填充,但这可能会破坏您的计划。
答案 2 :(得分:2)
memcpy(&(reply->val), address, sizeof(address))