C Spicherklassen?

2 Antworten

extern ist eine auschließliche Deklaration.
Für eine Definition ist auto der default.

Was ist das ? Eine Deklaration gibt an, dass es so eine Variable gibt, Definition sorgt dafür, dass Speicher für diese vom Compiler, d.h. eine Adresse und eine Größe definiert sind.

In C gehört das zusammen, außer Du benutzt das Schlüsselwort extern, dann heißt das, dass diese Variable bereits definiert wurde und existiert, also an dieser Stelle wiederverwendet wird (https://www.geeksforgeeks.org/difference-between-definition-and-declaration/).

volatile heißt, dass die Variable sich ändern kann, ohne dass Deine Programmdatei(en) bzw. der laufende Prozess diese Veränderung durchführt (Nebenläufigkeit). Dadurch verhindert man Optimierungen durch den Compiler, der in diesem Fall immer auf den tatsächlichen Wert zugreifen muss. Dazu gibt es detaillierte Erklärungen https://de.wikipedia.org/wiki/Volatile_(Informatik).

static ist wie du beschrieben hast eine Variable, die bei lokalen (Function Scope) nicht über den Stack bereitgestellt wird, sondern eine feste Adresse besitzt. Werte einer statische Variablen bleiben bei lokalen Variablen bspws. über einen Funktionsaufruf hinaus erhalten. (https://www.geeksforgeeks.org/static-variables-in-c/).

Ich bin kein C-Experte, aber volatile gibt's bei C# auch und das Konzept dürfte ähnlich sein. Was das tut, wusste ich vorher schon grob, aber die technischen Zusammenhänge habe ich erst seit dieser Erklärung verstanden:

https://www.mycsharp.de/wbb2/thread.php?threadid=123161#post3825822