當我們使用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