当我们使用memset
时,我们将它设置为零。为什么我们需要memset始终为零?
为什么?为什么不与1或2或别的东西。
此外,结构设置为0,似乎工作,但设置为1不会:如果我使用1
像
typedef struct abc{
int a;
} abc;
int main()
{
abc* ab;
memset(ab, 0, sizeof(abc));// it sets abc->a = 0; correct
}
但是,相反的0
:
memset(ab, 1, sizeof(abc));
那么的价值abc->a = garbage
或not equals to 1
为什么?
因为'memset'将所有**字节**设置为指定值,而不是整个整数。 – sgarizvi 2013-02-22 06:57:37
你的程序永远不会分配指针'ab'的目的地。该程序是未定义的行为(但这并不一定是'ab-> a'不是其中的原因)。 – 2013-02-22 06:57:41
,因为0是初始值。 – 2013-02-22 07:00:16