Ein neuer Datentyp für komplexe Zahlen

Als ein weiteres Beispiel für Datentypen wollen wir hier den Real- und Imaginärteil einer komplexen Zahl zu einem neunen Datentyp zusammenfassen. Es werden drei Varianten vorgestellt:

1. Variante: Separate Definition von Struktur und Datentyp:

/* 1. Variante */
struct sComplex {
    double re;
    double im;
};
typedef struct sComplex tComplex;

2. Variante: Definition von Struktur und Datentyp in einem Schritt:

/* 2. Variante */
typedef struct sComplex {
    double re;
    double im;
} tComplex;

3. Variante: Direkte Definition des Datentyps ohne einen Namen für die Struktur:

/* 3. Variante */
typedef struct {
    double re;
    double im;
} tComplex;

Verwendung des Datentyps:

    /* Definition der Variablen */
    tComplex a = { 1, 2 };
    tComplex b = { 3, 4 };
    tComplex c;

    /* Multiplikation */
    c.re = a.re*b.re-a.im*b.im;
    c.im = a.re*b.im+a.im*b.re;

Der vollständige Quellcode (mit der 3. Variante):

/*
Dateiname: typedef.c
Autor: Robert Heß
Version: 1.1
Datum: 19.10.2009
Beschreibung: Beispiel für typedef
*/

/* 3. Variante */
typedef struct {
    double re;
    double im;
} tComplex;

int main()
{
    /* Definition der Variablen */
    tComplex a = { 1, 2 };
    tComplex b = { 3, 4 };
    tComplex c;

    /* Multiplikation */
    c.re = a.re*b.re-a.im*b.im;
    c.im = a.re*b.im+a.im*b.re;
}
Seite 16