Universaldatentyp

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Universaldatentyp

Beitrag von Mok »

Hallo.
In C kann man von void ja alle möglichen Datentypen (auch Strukturen) ableiten. Gibt es sowas ähnliches auch für PB? Also einen Datentyp für Universal-Container.
Gruß, Mok.
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Marvin
Beiträge: 497
Registriert: 17.07.2005 14:42
Wohnort: Krikkit

Re: Universaldatentyp

Beitrag von Marvin »

void ist ein inexistenter Datentyp (sagt der Name). Damit kann man gar nichts machen, außer sich die Adresse der Variablen holen (wobei man keine Variable als void definieren kann, es geht afaik nur extern void).
void* ist ein Pointer, dessen Zieldatentyp nicht angegeben ist. In PB ist das halt ein normaler Pointer, auf den ich mit Peek oder Poke zugreifen (oder eben Strukturpointern die Adresse zuweisen) kann. Soweit ich weiß, ist der Zieldatentyp bei PB-Pointern nie angegeben, es sei denn, es handelt sich um Strukturen (wobei ich, wie ich zugeben muss, länger nichts mehr mit PB gemacht hab – kann sich in der Zwischenzeit also geändert haben).
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Universaldatentyp

Beitrag von NicTheQuick »

Es gibt in C void-Pointer. In PB wären das ganze normale Pointer ohne Struktur, also z.B. *pointer (C: *void pointer;).

Und du kannst einen strukturlosen Pointer jedem anderen Pointer zuweisen, also *wert.MyStruct = *pointer.

Den Typ void gibt es in C sonst nur um kennzuzeichnen, dass eine Funktion keinen Rückgabewert oder ähnliches. Das nächste ist eben der void-Pointer vom Typ *void.
Antworten