Linker, Loader und ausführbare Formate
Welche Aussage zu den Werten lokaler und globaler Variablen ohne Initialwert zu Beginn ihrer Verwendung in C ist richtig?
- ABeide beginnen stets mit 0
- BLokale Variablen beginnen mit 0, der Wert globaler Variablen ist unbestimmt
- CGlobale Variablen beginnen mit 0, der Wert lokaler Variablen ist nicht festgelegt (unbestimmt)
Antwort und Erläuterung anzeigen
Antwort: C. Globale Variablen beginnen mit 0, der Wert lokaler Variablen ist nicht festgelegt (unbestimmt)
Globale und statische Variablen liegen in .bss und werden beim Programmstart mit 0 gefüllt, beginnen also mit 0. Lokale Variablen werden bei jedem Funktionsaufruf auf dem Stack angelegt; sie jedes Mal mit 0 zu füllen würde Zeit kosten, daher können dort noch Daten einer früheren Nutzung dieser Stelle stehen. Beim Lesen nicht initialisierter lokaler Variablen kann sich das Ergebnis von Ausführung zu Ausführung ändern; sie sind daher stets zu initialisieren.