每当我们使用时,memset我们将其设置为零.
为什么?为什么不用1或2或其他东西.
此外,将结构设置为0似乎工作但设置为1不起作用:
typedef struct abc{
int a;
} abc;
int main()
{
abc* ab;
memset(ab, 0, sizeof(abc));// it sets abc->a = 0; correct
}
Run Code Online (Sandbox Code Playgroud)
但不是0如果我使用1像:
memset(ab, 1, sizeof(abc));
Run Code Online (Sandbox Code Playgroud)
然后是abc->a = garbage或的价值not equals to 1
为什么?
Duk*_*ing 12
你并不总是需要memset0,这只是最常见(也很有用)的事情.
memset将每个字节设置为某个给定值.一个int由4个字节组成,因此,当你memset进入时1,你将每个4设置为1,然后你有00000001 | 00000001 | 00000001 | 000000012 = 1684300910(第一个数字是二进制,最后一个是十进制).
另外 - 请注意,您永远不会为其分配内存ab.即使您的代码现在可以正常工作,也不安全.这将是:
abc ab;
memset(&ab, 0, sizeof(abc));
Run Code Online (Sandbox Code Playgroud)