如何获取指向 memcpy 成员变量的指针

发布于 2024-11-27 01:56:50 字数 193 浏览 0 评论 0原文

编辑以澄清; 为什么这个还不能编译?

class Member{
public:
__int32 PublicInt;
}
Member x;
memcpy(&x.PublicInt,&ByteArray,sizeof(__int32));

这不是得到一个指向 int 存储位置的指针吗?

edited for clarification;
why wont this work yet compile?

class Member{
public:
__int32 PublicInt;
}
Member x;
memcpy(&x.PublicInt,&ByteArray,sizeof(__int32));

is this not getting a pointer to the place where int is stored?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半岛未凉 2024-12-04 01:56:50

如果你的变量是

int Into;

...那么它的地址是:

&Into

请注意,通过数组引用得到的地址,所以如果ByteArray确实是一个字节数组,我怀疑您刚刚在您的 memcpy 中放错了 & ,这就是您想要的:

memcpy(&Into, ByteArray, sizeof(__int32));

我还建议这样做:

memcpy(&Into, ByteArray, sizeof(Into));

...以防您更改其类型之后。

If your variable is

int Into;

...then its address is:

&Into

Note that what you get with an array reference is the address, so if ByteArray is really a byte array, I suspect you've just misplaced the & in your memcpy and that this is what you want:

memcpy(&Into, ByteArray, sizeof(__int32));

I'd also recommend doing this:

memcpy(&Into, ByteArray, sizeof(Into));

...in case you change its type later.

如何视而不见 2024-12-04 01:56:50

这是一个快速示例来帮助您理解:

#include<iostream>
#include<cstring>
class Myclass
{
    public:
        char str2[40];

};

int main()
{
   char str1[]="Sample string";
   Myclass obj;
   memcpy(&(obj.str2),str1,strlen(str1)+1);
   std::cout<<obj.str2;

   return 0;
}

Hth :)

Here is a quick sample to help you understand:

#include<iostream>
#include<cstring>
class Myclass
{
    public:
        char str2[40];

};

int main()
{
   char str1[]="Sample string";
   Myclass obj;
   memcpy(&(obj.str2),str1,strlen(str1)+1);
   std::cout<<obj.str2;

   return 0;
}

Hth :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文