考虑下面的结构
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);
}
当我运行程序时,我期望所有结构成员都将初始化为 10,但它没有发生。它正在打印一些垃圾值
但是当我用 0 执行 memset 或用 1 执行 memset 时,它会起作用。
memset(&var,0,sizeof(struct A));
printf("value of len is %d\n",var.len);
有人可以解释一下 memset 的这种行为
最佳答案
memset
用字节值填充内存。您的 int
成员很可能需要多个字节(根据您的平台,四个字节很常见)。因此,您正在写入字节并将它们解释为 int
。
您的第二个示例按预期工作,因为 int
的全零表示形式需要解释为值 0
。
关于c - C 中 memset 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45413783/