Table of Contents
Struct
Structs (kurz für „structures“ oder auf Deutsch „Strukturen“) sind ein grundlegendes Konzept in vielen Programmiersprachen, insbesondere in C, wo sie ursprünglich eingeführt wurden. Sie dienen dazu, zusammengehörige Daten unterschiedlicher Typen zu einem neuen, benutzerdefinierten Datentyp zu bündeln.
Was sind Structs genau?
- Ein Struct ist eine Sammlung von Variablen (auch Felder oder Member genannt), die unter einem gemeinsamen Namen gruppiert werden.
- Im Gegensatz zu Arrays können die Felder unterschiedliche Datentypen haben (z. B. int, char, float, Zeiger usw.).
- Sie helfen, komplexe Daten übersichtlich zu organisieren, z. B. Informationen zu einer Person (Name, Alter, Adresse).
- Zugriff auf Felder erfolgt mit dem Punkt-Operator
.(bei Zeigern mit->).
Beispiel in C (der klassischen Sprache für Structs)
- snippet.c
#include <stdio.h> #include <string.h> struct Person { // Definition des Structs char name[50]; int alter; float groesse; }; int main() { struct Person p1; // Instanz erstellen strcpy(p1.name, "Anna"); p1.alter = 25; p1.groesse = 1.68; printf("Name: %s, Alter: %d, Größe: %.2f m\n", p1.name, p1.alter, p1.groesse); return 0; }
.
Structs in anderen Programmiersprachen
- C++: Fast identisch zu C, aber Structs können auch Methoden, Konstruktoren und Vererbung enthalten (ähnlich wie Klassen; der Hauptunterschied ist, dass Member standardmäßig public sind).
- Rust: Structs sind zentral und sehr sicher. Es gibt named structs, tuple structs und unit structs. Sie unterstützen Methoden über
impl-Blöcke. - Go: Ähnlich, structs gruppieren Felder; Methoden werden separat definiert.
- C#:
structist ein Werttyp (im Gegensatz zu Klassen, die Referenztypen sind).
Structs sind also ein universelles Werkzeug, um Daten zu strukturieren und Code lesbarer zu machen. Sie stammen aus C und wurden in vielen modernen Sprachen übernommen oder erweitert. 1)
STRUCT und PERIPH in Forth
Hans Eckes hat 2025 in Burladingen auf der Forth-Tagung über Structs und Peripherals referiert. Die Folien seines Vortrags und den Quelltext mit Beispielen haben wir hier für euch zugänglich gemacht.
struct-vortrag-hans-eckes2025.pdf
Der Vortrag konzentriert sich auf Peripherie, das ist für einen Erstkontakt überschaubarer als Structs. Der einzige Unterschied ist, dass beim Definieren von Peripherie der Offset explizit eingegeben wird und bei Structs nur die Feldgröße (Datentyp).
Der Quelltext stammt ursprünglich von seinem Embedded-Forth (alles in ARM-Assembler), reverse-engineered und läuft jetzt auf SwiftForth.
Der Quelltext ist dafür gedacht, von jedem der mag, gelesen und angepasst zu werden. Hans erklärt Idee, Syntax, und Anwendung in den Kommentaren.
Bitte verwende den Quelltext in diesem Sinne: lesen, anpassen, verwenden, weitergeben.