Zeigerarray

CCBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In der C-Programmierung ist ein Array von Zeigern ein Array, bei dem jedes Element ein Zeiger auf einen anderen Datentyp wie int, char, float usw. ist. In diesem Lab werden wir lernen, wie man auf ein Array von Zeigern auf Ganzzahlen und ein Array von Zeigern auf Zeichen zugreift.

Array von Zeigern auf Ganzzahlen

In diesem Schritt werden wir auf ein Array von Zeigern auf Ganzzahlen zugreifen. Öffnen Sie die Datei main.c im Verzeichnis ~/project/ und fügen Sie den folgenden Code ein:

#include <stdio.h>

// Global declaration.
const int MAX = 5;

int main() {
  printf("\n\n\t\t==== Array von Zeigern auf Ganzzahlen ====\n\n\n");

  int var[] = {10, 20, 30, 40, 50}; // initializing an array(here var) of int pointers
  int i = 0;

  /*
      ptr ist ein Array von Zeigern auf int, d.h.
      es speichert die Adresse jedes Arrayelements
  */
  int *ptr[MAX];

  for(i = 0; i < MAX; i++) {
    /*
        Weisen Sie die Adresse jedes Arrayelements
        dem ptr-Array zu
    */
    ptr[i] = &var[i];
  }

  for(i = 0; i < MAX; i++) {
    /*
        ptr[i] speichert die Adresse des Elements var[i].
        Daher gibt *ptr[i] den Wert des Elements zurück,
        das an der Stelle ptr[i] gespeichert ist
    */
    printf("Wert von var[%d] = %i\n\n", i, *ptr[i]);
  }

  printf("\n\n\t\t==== Ende des Programms ====\n\n\n");
  return 0;
}

Dieses Programm initialisiert ein Array von Zeigern auf Ganzzahlen und weist die Adresse jedes Arrayelements dem Zeigerarray zu. Anschließend druckt es den Wert jedes Elements mithilfe des Zeigerarrays.

Array von Zeigern auf Zeichen

In diesem Schritt werden wir auf ein Array von Zeigern auf Zeichen zugreifen. Fügen Sie den folgenden Code nach dem Code des vorherigen Schritts ein:

#include <stdio.h>

// Global declaration.
const int MAX = 4;

int main() {
  printf("\n\n\t\t==== Array von Zeigern auf Zeichen ====\n\n\n");

  char *names[] = {"Google", "Amazon", "Facebook", "Apple"}; // initializing an array(here names) of char pointers
  int i = 0;

  for(i = 0; i < MAX; i++) {
    printf("Wert von names[%d] = %s\n\n", i, names[i]);
  }

  printf("\n\n\t\t==== Ende des Programms ====\n\n\n");
  return 0;
}

Dieses Programm initialisiert ein Array von Zeigern auf Zeichen und weist die Adresse des ersten Zeichens jedes Strings dem Zeigerarray zu. Anschließend druckt es den vollständigen Namen jedes Elements mithilfe des Zeigerarrays.

Kompilieren und Ausführen des Programms

In diesem Schritt werden wir das Programm kompilieren und ausführen. Öffnen Sie das Terminal und navigieren Sie zum Verzeichnis ~/project/. Geben Sie den folgenden Befehl ein, um das Programm zu kompilieren:

gcc main.c -o main

Nach erfolgreicher Kompilierung geben Sie den folgenden Befehl ein, um das Programm auszuführen:

./main

Dieser Befehl wird das Programm ausführen und die Ausgabe im Terminal anzeigen:

		==== Array von Zeigern auf Ganzzahlen ====


Wert von var[0] = 10

Wert von var[1] = 20

Wert von var[2] = 30

Wert von var[3] = 40

Wert von var[4] = 50


		==== Array von Zeigern auf Zeichen ====


Wert von names[0] = Google

Wert von names[1] = Amazon

Wert von names[2] = Facebook

Wert von names[3] = Apple


		==== Ende des Programms ====

Vollständiger Code

#include <stdio.h>

// Global declaration.

const int MAX = 5;

int main() {
  printf("\n\n\t\t==== Array von Zeigern auf Ganzzahlen ====\n\n\n");

  int var[] = {10, 20, 30, 40, 50}; // initializing an array(here var) of int pointers
  int i = 0;

  /*
      ptr ist ein Array von Zeigern auf int, d.h.
      es speichert die Adresse jedes Arrayelements
  */
  int *ptr[MAX];

  for(i = 0; i < MAX; i++) {
    /*
        Weisen Sie die Adresse jedes Arrayelements
        dem ptr-Array zu
    */
    ptr[i] = &var[i];
  }

  for(i = 0; i < MAX; i++) {
    /*
        ptr[i] speichert die Adresse des Elements var[i].
        Daher gibt *ptr[i] den Wert des Elements zurück,
        das an der Stelle ptr[i] gespeichert ist
    */
    printf("Wert von var[%d] = %i\n\n", i, *ptr[i]);
  }

  printf("\n\n\t\t==== Array von Zeigern auf Zeichen ====\n\n\n");

  char *names[] = {"Google", "Amazon", "Facebook", "Apple"}; // initializing an array(here names) of char pointers
  i = 0;

  for(i = 0; i < MAX; i++) {
    printf("Wert von names[%d] = %s\n\n", i, names[i]);
  }

  printf("\n\n\t\t==== Ende des Programms ====\n\n\n");
  return 0;
}

Zusammenfassung

In diesem Lab haben wir gelernt, wie man auf ein Array von Zeigern auf Ganzzahlen und ein Array von Zeigern auf Zeichen zugreift. Ein Array von Zeigern ist ein Array, bei dem jedes Element ein Zeiger auf einen anderen Datentyp ist. Wir haben gelernt, wie man ein Array von Zeigern initialisiert, wie man die Adressen von Arrayelementen einem Zeigerarray zuweist und wie man die Arrayelemente mithilfe des Zeigerarrays zugreift.