Menu
Coddy logo textTech

Array-Namen als Pointer

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

Arrays und Zeiger in C haben eine besondere Beziehung, die grundlegend dafür ist, zu verstehen, wie C mit data im Speicher arbeitet. Wenn du ein array deklarierst, fungiert der Name des array selbst als ein konstanter pointer auf das erste Element des array.

Das bedeutet, dass der Name numbers, wenn du ein int numbers[5];-Array hast, im Wesentlichen ein pointer ist, der immer auf numbers[0] zeigt. Du kannst dir den Array-Namen als einen integrierten pointer vorstellen, den du nicht separat deklarieren musst.

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

Diese Gleichwertigkeit ist entscheidend: numbers und &numbers[0] liefern dir beide exakt dieselbe Speicheradresse. Der Arrayname ist einfach eine bequemere Möglichkeit, auf die Adresse des ersten Elements zu verweisen, ohne den Adressoperator verwenden zu müssen.

Das Verständnis dieser Beziehung eröffnet den Zugang zur Verwendung von Zeigertechniken mit Arrays, wodurch dein Code flexibler und effizienter werden kann. Der entscheidende Unterschied besteht darin, dass Array-Namen im Gegensatz zu gewöhnlichen Zeigern konstante Zeiger sind – du kannst nicht ändern, worauf sie zeigen.

challenge icon

Aufgabe

Einfach

Schreibe ein C-Programm, das die Gleichwertigkeit zwischen Arraynamen und Zeigern auf ihre ersten Elemente demonstriert. Dein Programm sollte:

  1. Ein Integer-Array namens numbers mit 4 Elementen deklarieren und mit den Werten {10, 20, 30, 40} initialisieren
  2. Einen Zeiger auf einen Integer namens ptr deklarieren
  3. Den Arraynamen numbers dem Zeiger ptr zuweisen
  4. Die in numbers gespeicherte address mit printf unter Verwendung des Formatbezeichners %p ausgeben
  5. Die address des ersten Elements &numbers[0] mit printf unter Verwendung des Formatbezeichners %p ausgeben
  6. Die in ptr gespeicherte address mit printf unter Verwendung des Formatbezeichners %p ausgeben
  7. Den Wert des ersten Elements mithilfe des Arraynamens ausgeben: *numbers
  8. Den Wert des ersten Elements mithilfe des Zeigers ausgeben: *ptr

Deine 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 demonstriert, dass der Arrayname als konstanter Zeiger auf das erste Element fungiert und dass numbers, &numbers[0] und ptr dieselbe Speicheradresse enthalten, wenn ptr dem Arraynamen 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 dem Zeiger den Array-Namen 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

Übe selbstständig: Online-C-Compiler