Zeiger auf Zeichen und Funktionen in C

Hallo dort, ambitionierte Programmierer! Heute werden wir auf eine aufregende Reise in die Welt der Zeiger auf Zeichen und Funktionen in C eintauchen. Keine Sorge, wenn du neu bei der Programmierung bist – ich werde dein freundlicher Guide sein und alles Schritt für Schritt erklären. Also, lasst unsTauchen!

C - Character Pointers and Functions

Was ist ein Zeiger auf ein Zeichen in C?

Stell dir vor, du hast ein magisches Lesezeichen, das auf ein beliebiges Buchstaben in einem Buch zeigen kann. Das ist im Grunde genommen, was ein Zeiger auf ein Zeichen in C ist – eine spezielle Variable, die die Speicheradresse eines Zeichens speichert.

In meinen frühen Tagen des Unterrichtens, habe ich meinen Schülern empfohlen, sich das Gedächtnis als einen riesigen Stadtteil vorzustellen, und jede Haus (Speicherort) hat eine eindeutige Adresse. Ein Zeiger auf ein Zeichen ist wie das Wissen der Adresse eines spezifischen Hauses, in dem ein Zeichen lebt.

Deklaration eines Zeigers auf ein Zeichen

Die Deklaration eines Zeigers auf ein Zeichen ist einfach. So geht das:

char *ptr;

Diese Zeile sagt dem Computer: "Hey, ich möchte einen Zeiger namens 'ptr' erstellen, der auf ein Zeichen zeigen wird."

Initialisierung eines Zeigers auf ein Zeichen

Jetzt, wo wir unseren Zeiger deklariert haben, geben wir ihm etwas, auf das er zeigen soll:

char ch = 'A';
char *ptr = &ch;

Hier erstellen wir ein Zeichen 'A' und然后 wir sagen unserem Zeiger, dass er sich merken soll, wo 'A' im Speicher lebt.

Beispiel für einen Zeiger auf ein Zeichen

Lass uns das, was wir gelernt haben, mit einem einfachen Beispiel in die Praxis umsetzen:

#include <stdio.h>

int main() {
char ch = 'B';
char *ptr = &ch;

printf("Das Zeichen ist: %c\n", *ptr);
printf("Die Adresse des Zeichens ist: %p\n", (void*)ptr);

return 0;
}

Wenn du diesen Code ausführst, wirst du sehen:

Das Zeichen ist: B
Die Adresse des Zeichens ist: [eine Speicheradresse]

Lass uns das aufbrechen:

  1. Wir erstellen ein Zeichen 'B' und speichern es in 'ch'.
  2. Wir erstellen einen Zeiger 'ptr' und lassen ihn auf 'ch' zeigen.
  3. Wir verwenden '*ptr', um den Wert zu erhalten, auf den ptr zeigt (was 'B' ist).
  4. Wir drucken die Adresse, die in 'ptr' gespeichert ist, wo 'B' im Speicher lebt.

Verständnis des Zeigers auf ein Zeichen

Jetzt tauchen wir ein bisschen tiefer. Zeiger auf Zeichen haben eine besondere Beziehung zu Zeichenketten in C. Sieh dir dieses Beispiel an:

char *str = "Hallo, Welt!";
printf("%s\n", str);

Dieser Code wird "Hallo, Welt!" ausgeben. Aber wie? In C sind Zeichenketten einfach Arrays von Zeichen, die mit einem Nullzeichen ('\0') enden. Wenn wir einen Zeiger auf ein Zeichen mit einer Zeichenkette wie diese verwenden, zeigt er auf das erste Zeichen der Zeichenkette.

Zugriff auf Zeichenarray

Wir schauen uns an, wie wir einen Zeiger auf ein Zeichen verwenden können, um auf Elemente in einem Zeichenarray zuzugreifen:

#include <stdio.h>

int main() {
char str[] = "C-Programmierung";
char *ptr = str;

for(int i = 0; ptr[i] != '\0'; i++) {
printf("%c", ptr[i]);
}

return 0;
}

Dieser Code wird "C-Programmierung" ausgeben. Hier verwenden wir den Zeiger, um auf jedes Zeichen im Array zuzugreifen, bis wir das Nullzeichen treffen.

Funktionen für Zeiger auf Zeichen

Jetzt erkunden wir einige gängige Funktionen, die mit Zeigern auf Zeichen arbeiten. Ich stelle diese in einer Tabelle zur Verfügung, für eine einfache Referenz:

Funktion Beschreibung Beispiel
strlen() Berechnet die Länge einer Zeichenkette size_t len = strlen(str);
strcpy() Kopiert eine Zeichenkette in eine andere strcpy(dest, src);
strcat() Verkettet zwei Zeichenketten strcat(str1, str2);
strcmp() Vergleicht zwei Zeichenketten int result = strcmp(str1, str2);

Wir schauen uns diese in Aktion an:

#include <stdio.h>
#include <string.h>

int main() {
char str1[20] = "Hallo";
char str2[] = " Welt!";
char str3[20];

printf("Länge von str1: %lu\n", strlen(str1));

strcpy(str3, str1);
printf("str3 nach strcpy: %s\n", str3);

strcat(str1, str2);
printf("str1 nach strcat: %s\n", str1);

if(strcmp(str1, "Hallo Welt!") == 0) {
printf("Zeichenketten sind gleich\n");
}

return 0;
}

Dieser Code zeigt, wie man diese gängigen Zeichenkettenfunktionen mit Zeigern auf Zeichen verwendet.

Und da hast du es! Wir haben die Grundlagen der Zeiger auf Zeichen und Funktionen in C abgedeckt. Denke daran, Praxis macht den Meister, also mach keine Angst, mit diesen Konzepten zu experimentieren. Frohes Coding!

Credits: Image by storyset