Unterschieden werden kann zwischen
Datentypen
|
+------------------+----------------+
| |
elementare Datentypen abgeleitete Datentypen
|
+------------------+-------------+----+------------------+
| | | |
eingeschränkte Zeiger- aggregierte abstrakte
Datentypen Datentypen Datentypen Datentypen
abgeleitete Datentypen
|
+------------------+----------------+
| |
vordefinierte benutzerdefinierte
Datentypen Datentypen
|
+--------+-------+
| |
anonyme benannte
Datentypen Datentypen
Abstrakte Datentypen sind im allgemeinen benutzerdefiniert. Häufig werden Sprachsystemen vorgefertigte abstrakte Datentypen beigefügt, diese gehören jedoch nicht zur Sprache im engeren Sinne und sind austauschbar und sind damit als benutzerdefiniert einzustufen.
Abgeleitete Datentypen sind, wenn auch in unterschiedlichem Maße, in allen algorithmischen Programmiersprachen möglich. Dabei sind folgende Entwicklungsniveaus zu erkennen, die jeweils aufeinander aufbauen:
In C stellt sich die Datentyp-Situation wie folgt dar:
Datentypen
|
+------------------+----------------+
| |
elementare Datentypen abgeleitete Datentypen
int |
float |
void |
|
+------------------+-------------+----+------------------+
| | | |
eingeschränkte Zeiger- aggregierte abstrakte
Datentypen Datentypen Datentypen Datentypen
enum ... * struct
union
Bemerkungen: Zur Datentypfamilie int gehöhren:
int short short int signed short int long long int signed long int char signed char unsigned unsigned int unsigned short unsigned short int unsigned long unsigned long int unsigned charZur Datentypfamilie float gehören:
float double long doubleNeben vordefinierten Datentypen wird in C vor allem mit benutzerdefinierten anonymen Datentypen gearbeitet.
Zur Einführung benutzerdefinierter Datentypen gibt es in C im
Gegensatz zu Pascal und neueren Datentypen kein einfaches, einheitliches
Konzept.
Ferner verwendet C in Bezug auf die Äquivalenz von Datentypen
(strukturelle Äquivalenz) ein anderes Konzept als viele andere
Sprachen (Namensäquivalenz).