C-Programmierung: Ein umfassender Leitfaden
Classified in Informatik
Written at on Deutsch with a size of 7,21 KB.
Arten von Funktionen in C
- In-Bibliothek: Vordefinierte Routinen, die häufig Operationen ausführen oder Berechnungen durchführen.
- Benutzerdefiniert: Funktionen, die Programmierer in ihren Programmen erstellen, basierend auf ihren eigenen Anforderungen. Diese können auch Teil von Modulen oder Bibliotheken sein.
Funktionen in C
Eine Funktion in C ist ein eigenständiges Segment des Quellcodes, das entwickelt wurde, um eine bestimmte, klar definierte Aufgabe zu erfüllen. Es ist ein Applet, das einen Wert oder ein Ergebnis basierend auf seinen Argumenten (Parametern) zurückgibt.
Numerische Vektor-Array-Argumente übergeben
Numerische Vektor-Arrays werden als Wert übergeben, anders als bei einzelnen Elementen. Wenn der Name eines realen Arrays als Argument angegeben wird, wird keine Kopie der Array-Elemente für die Funktion erstellt.
Strings übergeben
Strings sind Zeichen-Arrays. Sie können Strings zwischen Funktionen übergeben, indem Sie nur einen Zeiger auf das erste Element des Strings übergeben.
Funktionen und Strukturen
Die meisten neueren Versionen von C (ANSI) erlauben es, eine komplette Struktur direkt als Argument an eine Funktion zu übergeben und sie direkt über die return
-Anweisung zurückzugeben (Arrays können nicht mit der return
-Anweisung zurückgegeben werden).
Rekursion
Ein Programm verwendet Rekursion, wenn es eine Funktion enthält, die sich selbst aufruft. Ein Programm, das eine rekursive Funktion verwendet, funktioniert ähnlich wie eine Schleife.
Laufzeit-Stack
Rekursion wird mithilfe eines Laufzeit-Stacks implementiert. Der Stack ist eine spezielle Datenstruktur, die verwendet wird, um Variablen und Funktionsparameterwerte für jeden Aufruf in einem Programm zu speichern.
Makros im C-Präprozessor
Der Präprozessor, der in allen C-Compilern enthalten ist, ist ein leistungsstarkes und flexibles Werkzeug, das verschiedene Möglichkeiten bietet, wie z. B. das Einbinden von Dateien und die Definition von Konstanten. Er wird auch als Header-Datei, Header-Datei oder Include-Datei bezeichnet. Diese Dateien liegen normalerweise in Form von Quellcode vor, den der Compiler automatisch bei der Verarbeitung einer anderen Quelldatei einbindet.
Aufteilung des Programms in mehrere Dateien
Um ein Programm in C zu strukturieren, wird es normalerweise in verschiedene Dateien und Module aufgeteilt. Daher haben wir für ein Programm:
- Die Hauptdatei (
.c
), die die Funktionmain()
enthält. - Header-Dateien (
.h
), die die Prototypen der Funktionen enthalten. - Bibliotheken (
.c
), die die Funktionen enthalten.
Speichertypen
Bezieht sich auf die Dauerhaftigkeit der Variablen im Programm, d. h. die Zeit, in der die Variable aktiv ist oder lebt. Die Lebensdauer bezieht sich auf die Zeit, die seit der Erstellung der Variablen bis zu ihrer Zerstörung vergangen ist. Speichertypen sind auto
, static
, extern
und register
.
Gültigkeitsbereich einer Variablen
Der Gültigkeitsbereich einer Variablen definiert ihre Sichtbarkeit, d. h. von wo aus auf diese Variable zugegriffen werden kann. In Bezug auf den Gültigkeitsbereich können Variablen lokal oder global sein.
Modulare Programmierung
Modulare Programmierung bezieht sich auf die Aufteilung des Programms in überschaubare Teile, die Segmente oder Module genannt werden. Bisher haben wir Programme aufgebaut, die aus einem einzigen Codeblock bestanden. Dieser Block wurde durch die Funktion main()
gebildet. Aber ein einziger Codeblock kann gewisse Nachteile mit sich bringen:
- Das Programm kann lang und komplex werden.
- Die Anzahl der Fehler kann aufgrund der Größe des Programms erheblich sein.
- Das Programm sollte von einer Person erstellt werden.
Um dies zu beheben, wird das Programm so weit wie möglich in unabhängige Teile aufgeteilt.
Top-Down-Design
Ein guter Designer kann die Kernmodule identifizieren, aus denen ein Programm besteht, ausgehend von den Anforderungen, die das Programm erfüllen soll. Nach der Identifizierung der Module ist es notwendig, die Verfahren jedes Moduls in die entsprechenden Funktionen und die Hauptfunktion aufzuteilen.
Vorteile der modularen Programmierung
- Die Kosten für die isolierte Lösung verschiedener Probleme sind oft geringer als die Kosten für die globale Adressierung.
- Erleichtert die gleichzeitige Arbeit verschiedener Programmierergruppen.
- Ermöglicht eine größere Wiederverwendung von Code in zukünftigen Anwendungen sowie eine einfachere Wartung.
Eingabe- und Ausgabestrom
Dies ist der Name für die E/A-Sequenz.
Datenstrom: Eine Gruppe von Bytes, die in Serie (sequentiell) von einem Speichergerät zum Hauptspeicher des Computers oder umgekehrt über einen Kanal oder eine Leitung übertragen werden.
Stream (Variable des Datenstroms): Stellt den Kanal zu dem E/A-Gerät dar, von dem wir Daten lesen oder an das wir Daten senden. Es ist der Kanal, durch den die Daten fließen. Technisch gesehen ist ein Stream eine logische Verknüpfung des Geräts mit dem Programm zum Lesen oder Schreiben von Daten. Es ist auch die Vereinigung von Speicher (Puffer) und Datei mit dem physischen Gerät.
Puffer: Ein temporärer Speicherort oder Datenpuffer. Hier werden Bytes gespeichert, die aus einer Datei gelesen oder in eine Datei geschrieben werden sollen. Das Lesen einer Datei bedeutet also, dass ein Teil der Daten in einem Puffer mit fester Größe (einem Festplattenblock) gespeichert wird.
Datentyp FILE *
FILE
ist eine Abstraktion, die C verwendet, um mit einer Datei zu arbeiten. Die Variable des Datenstroms wird als Typ FILE *
deklariert. Die Variable des Datenstroms ist dann ein Zeiger auf eine Datei (oder ein Zeiger auf eine Struktur mit einer Reihe von Feldern mit Dateiinformationen).
Qualifizierer zum Öffnen von Dateien in C
Qualifizierer | Bedeutung |
---|---|
"a" | Öffnen, um Daten hinzuzufügen. Die neuen Daten werden an das Ende der Datei angehängt oder eine neue Datei wird erstellt (falls sie nicht existiert). |
"r" | Zum Lesen öffnen. Die Datei muss existieren. |
"w" | Zum Schreiben öffnen. Die Daten werden (von Grund auf neu geschrieben, wobei der Inhalt der Datei gelöscht wird) oder eine neue Datei wird erstellt (falls sie nicht existiert). |
"a+" | Zum Lesen und Hinzufügen von Daten öffnen. Wenn die Datei existiert, wird sie erstellt. |
"r+" | Zum Lesen und Schreiben öffnen. Die Datei muss existieren. |
"w+" | Zum Lesen und Schreiben öffnen. Es wird vom Anfang der Datei an geschrieben. Wenn die Datei existiert, wird sie gelöscht, wenn nicht, wird sie erstellt. |