User Tools

Site Tools


en:pfw:struct

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#: struct ist 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).

struct-f.zip

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.

1)
„Konstrukt“ unterscheidet sich von „Konstruktion“ dadurch, dass es stärker den Ergebniszustand (das fertige Gebilde, oft abstrakt oder künstlich) betont, während „Konstruktion“ eher den Prozess oder die Bauweise meint.
en/pfw/struct.txt · Last modified: 2026-01-02 19:19 by mka