Когда мы используем memset
, мы устанавливаем его с нулем.Зачем нам нужно 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
}
Но вместо 0
если я использую 1
как:
memset(ab, 1, sizeof(abc));
то значение abc->a = garbage
или not equals to 1
Почему?
Поскольку 'memset' устанавливает все ** байты ** в указанное значение, а не целое число в целом. – sgarizvi
Ваша программа никогда не выделяет пункт назначения указателя 'ab'. Программа - это неопределенное поведение (но это не должно быть причиной того, почему 'ab-> a' не является одним). –
, потому что 0 - начальное значение. –