我已经定义了一个结构
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。
答案 0 :(得分:3)
memset
使用 byte 值填充内存。您的int
成员最有可能需要多个字节(取决于您的平台,四个非常常见)。所以你要写字节并将它们解释为int
。
您的第二个示例按预期工作,因为int
的全零表示需要被解释为值0
。