Wie eine Variable Standort in C-Programmierung zu überprüfen

In der C-Programmierung, eine Art und Größe der Variablen werden zuerst aufgedeckt durch die Variable als eine bestimmte Art zu erklären, sondern auch durch die sizeof Schlüsselwort. Die zweite Bezeichnung einer Variablen, deren Inhalt, kann durch das Lesen der Wert der Variablen mit der entsprechenden C-Sprache-Funktion zu entnehmen.

Die dritte Beschreibung einer Variable ist die Stelle im Speicher. Sie sammeln diese Informationen durch die Verwendung von Betreiber und die% p Platzhalter, wie in O Variable, Warum denn gezeigt?

O-Variable, warum bist du?

# include int main () {char c = 'C'-int i = 123-float f = 98,6-double d = 6.022E23-printf ( "Adresse" c "% p n", c) -printf ( " Adresse von 'i'% p n ", i) -printf (" Adresse der 'f'% p n ", f) -printf (" Adresse "d"% p n ", d) -return ( 0) -}

Wenn das Betreiber eine Variable Präfixe, gibt es einen Wert für die Variable darstellt Adresse, oder seine Position im Speicher. Dieser Wert wird in hexadezimal ausgedrückt. Um diesen Wert zu sehen, wird die% p Umwandlungszeichen verwendet, wie in O Variable gezeigt, warum bist du?

Übung 1: Geben Sie den Quellcode aus O Variable: Warum bist du? in Ihren Editor. Erstellen und ausführen.

Die Ergebnisse der aus Übung generierte Programm 1 hergestellt sind einzigartig, nicht nur für jeden Computer, sondern auch potentiell für jedes Mal, wird das Programm ausgeführt.

Adresse von 'c' 0x7fff5fbff8ffAddress von 'i' 0x7fff5fbff8f8Address von 'f' 0x7fff5fbff8f4Address von 'd' 0x7fff5fbff8e8

Variable c wird im Speicher an der Stelle 0x7fff5fbff8ff gespeichert - das 140.734.799.804.671 Dezimalstelle ist. Beide Werte sind trivial, von Kurs- der Computer verfolgt die Spuren der Speicherplätze, die von mir ganz gut ist.

bild0.jpg

Diese Abbildung zeigt, wie diese Adressen im Speicher abzubilden.

Einzelne Feldelemente haben Speicherplätze als auch, wie in einem Array auf der Linie 10. Die in den Speicherplätzen gezeigt Betreiber Präfixe das spezifische Element Variable, Husten eine Adresse auf. Das% p Umwandlung Zeichen in der Funktion printf () zeigt die Adresse.

SPEICHERPLÄTZE IN EINEM ARRAY

# include int main () {char hallo [] = "Hallo!" - int i = 0-while (hallo [i]) {printf ( "% c in% p n", hallo [i], hallo [i ]) - i ++ -} return (0) -}

Übung 2: Erstellen Sie ein neues Projekt, indem Sie den Quellcode mit in den Speicherstellen in einem Array gezeigt. Erstellen und ausführen.

Auch hier ist Speicherplatz Ausgabe auf jedem Computer eindeutig.

H bei 0x7fff5fbff8f0e bei 0x7fff5fbff8f1l bei 0x7fff5fbff8f2l bei 0x7fff5fbff8f3o bei 0x7fff5fbff8f4! bei 0x7fff5fbff8f5

Im Gegensatz zum Beispiel aus Übung 1, die durch Übung generierten Adressen 2 benachbart sind im Speicher, ein Byte nach dem anderen.

Übung 3: Code ein Programm fünf Werte in einer int-Array angezeigt werden zusammen mit jeder Speicheradresse des Elements. Sie können Speicherplätze in einem Array verwenden Sie zu inspirieren, obwohl eine for-Schleife einfacher Code sein könnte.

  • Durch die Art und Weise, die Speicherplatz Betreiber sollte Ihnen vertraut sein. Es wird von der scanf () Funktion verwendet, die die Adresse einer Variable erfordert, nicht die Variable selbst. Das liegt daran, scanf () einen Wert direkt an einem Speicherplatz stellt. Wie? Durch die Verwendung von Zeigern, natürlich!

  • Das Betreiber ist auch die bitweise AND operator- jedoch der Compiler ist intelligent genug, um zu sagen, wenn Präfixe eine Variable und wenn Teil einer binären mathematische Gleichung ist.

Menü