0 Tage Serie
Code-Bibliothek

C für Fortgeschrittene

Lies diese C-Snippets für Fortgeschrittene Zeile für Zeile — jedes kommt mit einer Erklärung, was der Code tut und warum.

C · Mittel

Zeigerarithmetik mit Arrays

In C zerfallen Array-Namen in Zeiger. Das Addieren eines Integers zu einem Zeiger bewegt den Zeiger um diese Anzahl von Elementen, nicht um Bytes.

Arrays & ListenMemory Management
Snippet öffnen →
C · Mittel

Speichereffizienz mit Unions

Eine Union ermöglicht es, verschiedene Datentypen im selben Speicherbereich zu speichern. Die Größe der Union wird durch ihr größtes Element bestimmt. Dies ist besonders in der Systemprogrammierung…

DatentypenMemory Management
Snippet öffnen →
C · Mittel

Sichere mehrzeilige Makros mit do-while(0)

Das Einschließen eines Makros mit mehreren Anweisungen in einen 'do { ... } while (0)'-Block stellt sicher, dass es sich wie eine einzelne Anweisung verhält. Dies verhindert Logikfehler, wenn das M…

SyntaxBest PracticesMemory Management
Snippet öffnen →
C · Mittel

Variadische Funktionen mit stdarg.h

Variadische Funktionen ermöglichen es, eine variable Anzahl von Argumenten an eine Funktion zu übergeben. Dies wird mit den in <stdarg.h> definierten Makros erreicht. Man muss mindestens ein festes…

FunktionenSyntax
Snippet öffnen →
C · Mittel

Der volatile Typ-Qualifizierer

Das Schlüsselwort 'volatile' teilt dem Compiler mit, dass sich der Wert einer Variablen jederzeit ändern kann, ohne dass der umgebende Code eine Aktion ausführt. Dies verhindert, dass der Compiler…

SyntaxPerformance
Snippet öffnen →
C · Mittel

Inline-Funktionen für Performance

Das Schlüsselwort 'inline' ist ein Hinweis an den Compiler, Funktionsaufrufe durch den tatsächlichen Funktionskörper zu ersetzen. Dies eliminiert den Overhead eines Funktionsaufrufs (Stack-Manipula…

FunktionenPerformance
Snippet öffnen →
C · Mittel

Sichere String-Formatierung mit snprintf

Die Funktion snprintf ist eine sicherere Alternative zu sprintf, da sie eine maximale Puffergröße erfordert. Dies verhindert Pufferüberläufe, indem sichergestellt wird, dass nicht mehr als 'n' Zeic…

FunktionenBest Practices
Snippet öffnen →
C · Mittel

Atomare Operationen mit stdatomic.h

Der Header stdatomic.h (C11) bietet Typen und Funktionen für atomare Operationen, die für die threadsichere Programmierung ohne den Overhead schwerer Sperren (Locks) unerlässlich sind. Diese Operat…

Memory ManagementPerformance
Snippet öffnen →
C · Mittel

Präzise String-Suche mit strcspn

Die Funktion strcspn berechnet die Länge des Anfangssegments eines Strings, das vollständig aus Zeichen besteht, die NICHT in einer angegebenen Menge enthalten sind. Sie ist sehr effizient, um das…

SyntaxPerformance
Snippet öffnen →
C · Mittel

Robustes numerisches Parsing mit strtol

Im Gegensatz zum einfacheren atoi() bietet strtol() eine robuste Fehlerprüfung und verarbeitet verschiedene Zahlenbasen. Es erkennt Überläufe, leere Eingaben und teilt präzise mit, wo der numerisch…

SyntaxBest Practices
Snippet öffnen →
C · Mittel

Variadische Funktionen mit stdarg.h

Variadische Funktionen ermöglichen es einer Funktion, eine unbestimmte Anzahl von Argumenten zu akzeptieren. Der Header 'stdarg.h' bietet Makros wie 'va_start', 'va_arg' und 'va_end', um die Argume…

FunktionenSyntax
Snippet öffnen →
C · Mittel

Optimierung mit dem restrict-Qualifier

Das Schlüsselwort 'restrict' ist ein Hinweis an den Compiler, dass der Pointer innerhalb dieses Scopes die einzige Möglichkeit ist, auf das referenzierte Objekt zuzugreifen. Dies eliminiert potenzi…

PerformanceMemory Management
Snippet öffnen →
C · Mittel

Unions für Type-Punning

Unions ermöglichen es, denselben Speicherort als verschiedene Typen zu interpretieren. Dieses 'Type-Punning' wird oft auf mittlerem Niveau verwendet, um die rohe binäre Darstellung von Datentypen w…

DatentypenMemory Management
Snippet öffnen →
C · Mittel

Strukturelles Padding und offsetof

Compiler fügen 'Padding'-Bytes zwischen Struktur-Membern ein, um sicherzustellen, dass sie aus Performancegründen an Speichergrenzen ausgerichtet sind. Das Makro 'offsetof' aus 'stddef.h' ermöglich…

Memory ManagementPerformance
Snippet öffnen →
C · Mittel

Automatische Bereinigung mit atexit

Die Funktion atexit registriert einen Callback, der automatisch ausgeführt wird, wenn das Programm normal über return in main oder exit() beendet wird. Dies stellt sicher, dass wichtige Bereinigung…

FunktionenBest Practices
Snippet öffnen →
C · Mittel

Array-Zerfall und Pointer-Arithmetik

In C 'zerfallen' Arrays in Pointer auf ihr erstes Element, wenn sie an Funktionen übergeben werden. Das bedeutet, dass die Größeninformation innerhalb der Funktion verloren geht. Verwenden Sie Poin…

Arrays & ListenMemory Management
Snippet öffnen →