Инициализация глобальной и статической переменной на 0 всегда не нужна?
Стандарт C гарантирует, что глобальные и статические переменные, если они не инициализированы, всегда0
.
Вот мой вопрос: неинициализированные глобальные и статические переменные идут вBSS
сегмент в программе. Так называется0
должно бытьall-bit 0
.
Для интегральных переменныхall-bit 0
будет оцениваться как0
, Переменные с плавающей точкой, если следующиеIEEE 754, это также0.0
, Но для указателей нулевые указатели не обязательно должны бытьall-bit 0
то же самое происходит с инициализацией глобального указателя:
int* p = NULL;
сделать разницу просто:
int *p;