Grundlagen der Variablenspeicher für C-Programmierung

Die digitale Speicherung wird in Bytes gemessen. Obwohl in der Programmiersprache C dargestellt, die alle die Innenseite Speicher gespeicherte Information ist einfach eine Masse von Daten, gestapelt Bits auf Bits, Bytes auf Bytes. Es liegt an der Software Sinn für alles, was zu machen.

Einführung in die Variablenspeicher

In der C-Programmierung, Daten von Speichertyp kategorisiert (char, int, float oder double) und weiter nach Stichworten klassifiziert (lang, kurz, signiert, mit oder ohne Vorzeichen). Trotz des Chaos im Inneren Speicher wird Ihr Programm Speicherung in diesen Werten organisiert, bereit für den Einsatz in Ihrem Code.

Innerhalb eines laufenden Programms wird eine Variable diese Attribute beschrieben:

  • Name: der Name, den Sie die Variable. Der Name nur in Ihrem Code verwendet wird, nicht, wenn das Programm läuft.

  • Art: einer der Variablentypen der C-Sprache: char, int, float und double.

  • Inhalt: Set in Ihrem Programm, wenn eine Variable ein Wert zugewiesen wird. Obwohl Daten am Lagerort der Variablen vorher existieren kann, ist es Müll betrachtet, und die Variable wird nicht initialisiert betrachtet, bis er einen Wert zugewiesen ist.

  • Ort: eine Adresse, eine Stelle innerhalb der Speicher des Geräts. Dieser Aspekt einer Variablen ist etwas, das Sie nicht brauchen, das Programm und das Betriebssystem zu verhandeln dictate- wo Informationen intern gespeichert wird. Wenn das Programm läuft, verwendet er die Lage auf Daten einer Variable zugreifen.

Von diesen Aspekten sind die Variablennamen, Typ und Inhalt bereits bekannt. Die Lage der Variable kann auch gesammelt werden. Nicht nur das, aber die Lage kann manipuliert werden, das ist die Inspiration hinter Zeiger.

Wie einer Variablen Größe zu lesen

Wie groß ist ein Zeichen? Wie lange dauert eine lange? Nur das Gerät Sie Programmierung kennt die genaue Speichergröße von Standardvariablen des C.

Wie groß ist eine Variable? verwendet den Operator sizeof, wie viel Speicherplatz jeder Sprache C-Variablentyp belegt im Speicher zu bestimmen.

Wie groß ist eine Variable?

# include int main () {char c = 'C'-int i = 123-float f = 98,6-double d = 6.022E23-printf("chart%un",sizeof(c))-printf("intt%un",sizeof(i))-printf("floatt%un",sizeof(f))-printf("doublet%un",sizeof(d))-return(0)-}

Übung 1: Geben Sie den Quellcode aus, wie groß ist eine Variable? in Ihren Editor. Erstellen Sie und führen Sie die Größe der einzelnen Variablentyp zu sehen.

Hier ist die Ausgabe:

char 1DE 4float 4Doppelklicken 8

Der sizeof Schlüsselwort ist keine Funktion. Es ist mehr eines Bedieners. Sein Argument ist der Name einer Variablen. Der Wert, der zurückgegeben wird ist der C-Sprache Variablentyp als size_t bekannt.

Die Variable ist ein size_t typedef einer anderen Variablentyp, beispielsweise ein unsigned int auf einen PC oder eine lange unsigned int auf anderen Computersystemen. Unterm Strich ist, dass die Größe, die Anzahl der Bytes verwendet werden, diese Variable zu speichern.

Arrays sind auch Variablen in C und sizeof arbeitet auf ihnen.

WIE GROSS IST EIN ARRAY?

# include int main () {char string [] = "Enthält diese Zeichenfolge mich dick?" - printf ( "Der String "% s ". eine Größe von% hat u n", string, sizeof (string )) - return (0) -}

Übung 2: Geben Sie den Quellcode aus, wie groß ist ein Array? Erstellen Sie und führen Sie es, um zu sehen, wie viel Speicherplatz die char-Array einnimmt.

Übung 3: Bearbeiten Sie den Quellcode Wie groß ist ein Array? die Strlen Zugabe () Funktion sein Ergebnis auf dem Array mit den sizeof Bedienungsergebnis zu vergleichen.

Wenn die von strlen zurückgegebenen Werte () und sizeof unterscheiden, können erklären Sie den Unterschied?

Wenn Sie ein Array erstellen, ordnet das Programm Platz im Speicher des Arrays Werte zu halten. Die Zuordnung wird in dem Array von der Größe jedes Elements berechnet. So ein char-Array von 35 Elemente (einschließlich der 0 oder NULL) belegt 35 Byte Speicherplatz, aber die Länge des Strings ist immer noch nur 34 Zeichen (Bytes).

Übung 4: Ändern Sie den Quelltext aus Übung 2 wieder, diesmal ein int-Array mit fünf Elementen zu schaffen. Das Array braucht keine Werte zugeordnet werden, noch muss sie angezeigt werden. Erstellen und ausführen.

Können Sie den Ausgang zu erklären? Wenn nicht, überprüfen Sie die Ausgabe aus Übung 1. Versuchen Sie herauszufinden, was passiert ist.

Wie groß ist eine Struktur?

# include int main () {struct Roboter {int alive-char name [5] -int xpos-int ypos-int Stärke -} - printf ( "Die bösen Roboter struct Größe% ist u n", sizeof (struct Roboter) -return) (0) -}

Übung 5: Starten Sie ein neues Projekt mit dem Code gezeigt in Wie groß ist eine Struktur? Erstellen Sie und führen Sie die Größe der Strukturvariable zu bestimmen.

Der Operator sizeof funktioniert auf allen Variablen-Typen, aber für eine Struktur, geben Sie die Struktur selbst. Benutze das Stichwort Struktur durch die Struktur des Namens gefolgt, wie in Zeile 14. Vermeiden Sie die Verwendung einer Strukturvariablen gezeigt.

Die Größe der Struktur wird durch Addition der Speicherbedarf für jedes seiner Elemente bestimmt. Sie könnten, angesichts der Größe Ausgang aus Übung 18-5, dass vier int-Variablen plus fünf char Variablen, die Sie würde davon ausgehen, 21: 4 x 4 + 1 x 5. Aber es funktioniert nicht auf diese Weise.

Hier ist die Ausgabe:

Die bösen Roboter struct Größe ist 24

Der Grund, warum Sie einen anderen Wert als 21 zu sehen ist, dass die Programmvariablen im Speicher ausgerichtet ist. Es ist nicht stapeln sie auf, eine nach der anderen. Dass drei zusätzlichen Bytes werden an das Ende des Namens Array aufgefüllt es mit einem 8-Byte im Speicher versetzt ausgerichtet zu halten.

bild0.jpg
  • Der sizeof-Operator liefert die Größe eines C-Sprache variabel. Es enthält die Größe einer Struktur.

  • Sie können sizeof nicht verwenden, um die Größe des Programms oder die Größe von etwas anderes als eine Variable zu bestimmen.

  • Wenn Sie sizeof auf einer Strukturvariablen verwenden, können Sie die Größe dieser Variablen erhalten, die als deklariert Größe der Struktur weniger sein kann. Ein Problem kann auftreten, wenn Strukturen in eine Datei zu schreiben, wenn Sie die Variable Größe und nicht die Struktur der definierten Größe verwenden.

  • Der 8-Byte verwendet Offset-Variablen im Speicher auszurichten hält die CPU glücklich. Der Prozessor ist viel effizienter an Speicher auf diese 8-Byte-Offsets ausgerichtet zu lesen.

Menü