Menu
Coddy logo textTech

Array-Namen als Pointer

Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 7 von 63.

Arrays und Pointer in C haben eine besondere Beziehung, die grundlegend für das Verständnis ist, wie C mit Daten im Speicher arbeitet. Wenn Sie ein Array deklarieren, fungiert der Array-Name selbst als konstanter Pointer auf das erste Element des Arrays.

Das bedeutet, dass wenn Sie ein Array wie int numbers[5]; haben, der Name numbers im Grunde ein Pointer ist, der immer auf numbers[0] points. Sie können sich den Namen des Arrays wie einen eingebauten Pointer vorstellen, den Sie nicht separat Declare müssen.

int numbers[5] = {10, 20, 30, 40, 50};
// 'numbers' points to the first element
// numbers == &numbers[0]  // Diese sind äquivalent!

Diese Äquivalenz ist entscheidend: numbers und &numbers[0] liefern Ihnen beide genau dieselbe Speicheradresse. Der Array-Name ist einfach eine bequemere Möglichkeit, auf die Adresse des ersten Elements zu verweisen, ohne den Adresse-von-Operator verwenden zu müssen.

Das Verständnis dieser Beziehung öffnet die Tür zur Verwendung von Pointer-Techniken mit Arrays, was Ihren Code flexibler und effizienter machen kann. Der Hauptunterschied besteht darin, dass Array-Namen im Gegensatz zu normalen Pointern konstante Pointer sind - Sie können nicht ändern, worauf sie zeigen.

challenge icon

Aufgabe

Einfach

Schreiben Sie ein C-Programm, das die Äquivalenz zwischen Array-Namen und Pointern auf ihr erstes Element demonstriert. Ihr Programm sollte:

  1. Ein Integer-Array namens numbers mit 4 Elementen deklarieren und es mit den Werten {10, 20, 30, 40} initialisieren
  2. Einen Pointer auf einen Integer namens ptr deklarieren
  3. Den Array-Namen numbers dem Pointer ptr zuweisen
  4. Die in numbers gespeicherte Adresse mittels printf mit dem Formatspezifizierer %p ausgeben
  5. Die Adresse des ersten Elements &numbers[0] mittels printf mit dem Formatspezifizierer %p ausgeben
  6. Die in ptr gespeicherte Adresse mittels printf mit dem Formatspezifizierer %p ausgeben
  7. Den Wert des ersten Elements unter Verwendung des Array-Namens ausgeben: *numbers
  8. Den Wert des ersten Elements unter Verwendung des Pointers ausgeben: *ptr

Ihre Ausgabe sollte die Ergebnisse im folgenden Format anzeigen:

Array name address: [address]
First element address: [address]
Pointer address: [address]
Value via array name: 10
Value via pointer: 10

Diese Aufgabe zeigt, dass der Array-Name als konstanter Pointer auf das erste Element fungiert und dass numbers, &numbers[0] und ptr alle dieselbe Speicheradresse enthalten, wenn ptr der Array-Name zugewiesen wird.

Probier es selbst

#include <stdio.h>

int main() {
    // TODO: Schreibe deinen Code hier
    // 1. Deklariere und initialisiere das Array 'numbers' mit {10, 20, 30, 40}
    // 2. Deklariere einen Zeiger auf Integer namens 'ptr'
    // 3. Weise den Array-Namen dem Zeiger zu
    // 4. Gib alle erforderlichen Adressen und Werte aus
    
    return 0;
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logic & Flow