In einem der vergangenen Artikel habe ich ja schon gezeigt, welche Variablen es in der Programmiersprache C gibt.
Beim Umgang mit Variablen und Funktionen stellt sich häufig die Frage, auf welche Variablen kann eine Funktion zugreifen, mit welchen Variablen kann eine Funktion arbeiten.
Wozu Gültigkeitsbereiche
Häufig möchte man gar nicht, dass jede Variable von jeder Funktion änderbar ist. Stell Dir vor mehrere Programmierer arbeiten an einem Projekt und müssten sich einigen, wer denn seine Inter-Variable „i“ nennen darf.
Oder noch schlimmer: Man nutzt Funktionen aus einem anderen Projekt und müsste bevor man selbst programmiert, alle Programme durchforsten ob die Variable „Wert“ schon einmal genutzt worden ist.
Um dies zu verhindern unterscheidet man zwischen globalen Variablen, die global, also im gesamten Programm gelten und lokalen Variablen, die einen beschränkten Gültigkeitsbereich haben.
Speicherorte von Variablen
Welche Variablen global sind und welche lokal sind, versteht man am besten, wenn man sich einmal anguckt, in welche Speicherbereiche die Variablen vom Compiler/Linker bzw. vom Mikrocontroller abgelegt werden.
Globale Variablen kann der Compiler bei der Erstellung des Programms in den Datenbereich ablegen. Bei lokalen Variablen ist bei der Übersetzung des Programms nicht bekannt, wie häufig (oder ob überhaupt) diese Variablen benötigt werden.
Im folgenden Video zeige ich daher zunächst, wie der Compiler bzw. während der Ausführung der Mikrocontroller Variablen behandelt.
Nachdem Du nun gesehen hast, wo Compiler und Mikrocontroller die Variablen verwalten, möchte ich im nächsten Video einige Beispiele zeigen.
Am besten ist nun, Du rufst auf Deinem PC die Entwicklungsumgebung auf und testet selbst einmal die Gültigkeitsbereiche von Variablen.
Dieser Artikel ist Teil des Mikrocontroller-Kurses auf ET-Tutorials.de.
[ >> Hier geht es zurück zur Übersichtsseite des Mikrocontroller-Kurses .]
Hat Dir der Artikel geholfen? - Dann hilf dem Artikel ;-)
|
Ähnliche Artikel
Folgende Artikel aus der gleichen Kategorie könnten Dich ebenfalls interessieren:Funktionen in C, Definition und Deklaration Durch die Verwendung von Funktionen kann man Programme strukturieren und effizienter machen. In unse...
Was machen Compiler und Linker ? Im heutigen Artikel geht es um das Übersetzen eines C-Programms. Ein C-Programm wird zunächst einma...
Funktionen in C Ähnliche oder gleiche Befehle, die öfter genutzt werden kann man besser in Funktionen ausgliedern. F...
Definition der Portadresse durch die Special Function Register Heute geht es wie angekündigt noch einmal um Ports. Wir setzen auf das von uns neu erstellte Projekt...





{ 5 Kommentare… sie unten lesen oder einen hinzufügen }
Hallo und vielen Dank für die Videos.
Wir haben zwar in der Schule auch gelernt, dass man auf lokale Variablen nur innerhalb einer Funktion zugreifen kann, aber nicht warum?
Das mit dem Stack ist eine gute Erklärung. Danke!
Hi ! Hab da mal ne verständnisfrage.
Wenn die Funktion funk() in main() aufgerufen wird, dann wissen wir doch, dass funk() int zurückgibt. Muss da nicht etwas int c=funk(k) stehen ? Meine Frage ist nur warum der Compiler nicht meckert.
Gruß Cihan
Das Ergebnis von funk wird doch einer Integer-Variablen zugewiesen.
Hallo,
erstmal ein super dickes Lob!!! Ich liebe die Website!!!!
Frage:
Wenn für den Kompiler k und var1 eigentlich das Gleiche ist, warum dann überhaupt var1 einführen?
…i=funk(k)…
…int funk(int k)…
…m=k+5…
Gruß,
Jan
@Jan
Weil Du in einer Funktion die gewünschte Operation für alle Variablen druchführen kannst ud nicht nur für k.
Wenn Du direkt mit k arbeiten würdest, würdest Du k immer verändern, auch wenn Du die Operation auf eine andere Variable anwenden möchtest.