C - memset无法正常工作

时间:2017-07-31 10:46:25

标签: c memset

我已经定义了一个结构

struct A
{
    int len;
    int wid;
    int size;
};

void main()
{
    struct A var;
    memset(&var,10,sizeof(struct A));
    printf("value of len is %d\n",var.len);
}

我预计printf语句的输出应为10,但不是打印10,而是打印一些地址。

但是当我做的时候

memset(&var,0,sizeof(struct A));
printf("value of len is %d\n",var.len);

打印正确,printf语句打印0作为输出。那么这两个memset之间有什么区别呢。为什么第一个memset没有将值设置为10,而第二个memset正确设置值,即0。

1 个答案:

答案 0 :(得分:3)

memset使用 byte 值填充内存。您的int成员最有可能需要多个字节(取决于您的平台,四个非常常见)。所以你要写字节并将它们解释为int

您的第二个示例按预期工作,因为int的全零表示需要被解释为值0