Zeigertypen
Zeiger = Adresszettel, speicher Adresse, wo ich den Wert finde
Gibt verschiedene Zeigertypen = Art des Adresszettels, z, B. int oder float
&variabel -> Adresszettel, also die Speicheradresse
*zeiger_variabel -> greift man auf den Wert zu, also man greift auf den Adresszettel und holt sich den
int <- typ von alter *zeiger_auf_alter; // Ein Zeiger wird deklariert (zeigt noch nirgendwohin)
zeiger_auf_alter = &alter; // JETZT kommt der Adressoperator (&) zum Einsatz!
// 'zeiger_auf_alter' speichert jetzt die ADRESSE von 'alter'.
-> Wert Null, um Abstürze zu vermeinden
-> dynamische Speicherverwaltung (Programm weißt variabel Speicher zu)
-> Alle, wenn wir Speicher brauchen ist der, aber wir schließen diesen auch wieder (Effizienz, Flexibilität und komplexe Datenstrukturen) mit malloc() wie viel Byte, calloc() für bestimmte Anzahl und gleich Null und realloc() -> Vergrözern -> free, um zu verkleinern
-> Heap muss organiziert werden, aber viel macht für Programmierer, da sonst memory lewaks oder abstürze
Zeiger auf Zeichenkette
String = char-Array mit \0-> ende
\0-> ende
char ' zeigt auf den Anfang: z. B. char *str speicher erste Adresse
-> zwei Varianten:
char *s1 = “hallo”; also nicht so geil
char mein_array[] = "Moin";
char *s2 = mein_array;
-> dynamisch
String-Funktionen
strcpy -> char *strcpy(char *z, const char *q); -Y kopiert q nach z, z muss passen
strncpy -> char *strncpy(char *z, const char *q, size_t n);
strcat -> char *strcat(char *z, const char *q); Hängt q an z an. Achtung: z muss für beide + \0 passen!
q
z
\0
Datein einlesen
Aktion
Funktion(en)
Syntaxbeispiel (kurz)
Kurze Erklärung & Wichtiges
1. Datei öffnen & "festhalten"
fopen()
FILE *fp = fopen("datei.txt", "r");
Gibt FILE* ("Hand"). Modi: "r"(lesen), "w"(neu/überschreiben), "a"(anhängen). Wichtig: NULL-Check! if(fp==NULL){/* Fehler! */}
FILE*
"r"
"w"
"a"
NULL
if(fp==NULL){/* Fehler! */}
2. Sachen aus Datei lesen (genau)
fscanf()
int zahl; fscanf(fp, "%d", &zahl);
Liest formatiert (wie scanf) aus Datei fp in deine Variable zahl.
scanf
fp
zahl
3. Ganze Zeilen Text lesen
fgets()
char zeile[100]; fgets(zeile, 100, fp);
Liest Zeile (max. 99 Zeichen + \0) in den zeile-Puffer. Sicherer für Texte mit Leerzeichen.
zeile
4. Datei schließen & loslassen
fclose()
fclose(fp);
Muss sein! Speichert alles endgültig, gibt die Datei frei. Verhindert Datenverlust.
Zuletzt geändertvor 21 Tagen