Initialisierung globaler und statischer Variablen auf 0 ist immer unnötig?
Der C-Standard garantiert, dass globale und statische Variablen immer vorhanden sind, wenn sie nicht initialisiert sind0
.
Hier ist meine Frage: Die nicht initialisierten globalen und statischen Variablen gehen zuBSS
Segment im Programm. Also das so genannte0
sollte seinall-bit 0
.
Für ganzzahlige Variablenall-bit 0
wird bewertet als0
. Die Gleitkommavariablen, falls folgendeIEEE 754, ist auch0.0
. Bei Zeigern muss es sich jedoch nicht unbedingt um Nullzeiger handelnall-bit 0
Dies gilt auch für die Initialisierung eines globalen Zeigers wie folgt:
int* p = NULL;
einen Unterschied machen, nur um:
int *p;