首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Memset对象

Memset对象
EN

Stack Overflow用户
提问于 2012-02-04 21:42:02
回答 4查看 2.8K关注 0票数 2
代码语言:javascript
复制
#include <iostream>
#include <string.h>
using namespace std;

class A
   {
     private:
  int a;
  int b;
  public:
  A():a(10),b(20){};
  A(int ad,int bd):a(ad),b(bd){};
  void printvalues()
  {
        cout<<a << " " <<b<<endl;
  }
};

int main()
{

  A a(5,12);

  memset(&a,sizeof(A),0);
  a.printvalues();

  return 0;
}

Mem将对象设置为0,似乎不会对对象产生任何影响。有人能帮我理解这个行为吗?输出:5 12

EN

回答 4

Stack Overflow用户

发布于 2012-02-04 21:44:16

你对memset的观点是错误的。我是memset(addr, value, number)

注意:在C++中,通常会避免使用memset

票数 9
EN

Stack Overflow用户

发布于 2012-02-04 21:44:03

你把memset搞错了:

代码语言:javascript
复制
void * memset ( void * ptr, int value, size_t num );

它应该是:

代码语言:javascript
复制
memset(&a,0,sizeof(A));

在您的示例中,您将a0字节设置为sizeof(A),因此显然没有变化。

票数 5
EN

Stack Overflow用户

发布于 2012-02-04 22:11:53

memset的正确语法是memset(&a,0,sizeof(A)),因为第一个参数是数组或变量,第二个参数是值,第三个参数是字节数。

有关memset的更多详细信息,请访问http://www.cplusplus.com/reference/clibrary/cstring/memset/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9141300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档