Pointer ein Typ?
-
also erstmal danke für die ausführliche antwort und Hilfe.
Er hat nicht den Typen seines Wertes, sondern den Typen eines Zeigers auf seinen Wert.
Eh - der Zeiger hat den Typen eines Zeigers auf seinen Wert? Also praktisch HAT ein Zeiger den Typen eines Zeigers. Somit also HAT ein Zeiger einen Typ und IST kein Typ?
Andererseits:
Ein Typ gibt an, wie ein Wert (d.h. eine Bitfolge) interpretiert wird. Anders gesagt, wie man die Variable erkennen kann. Zum Beispiel int als Ganzzahl, bool als Wahrheitswert und float als Fliesskommazahl.
da ein pointer ja interpretiert werden muss - ist er nach dieser definition ein typ oder?
Sehe ich das so richtig?:
EIn Pointer ist ein Typ vom Typ Pointer. Genau wie ein int ein Typ vom Typ int ist. Bei dereferenzierung bekommt eine variable den typ auf den der Pointer gezeigt hat - also auf den typ des datums auf den der pointer gezeigt hat.
-
ja.
-
danke
-
Sorry, dass ich mich eventuell nicht ganz klar ausgedrückt hatte.
gast_xy schrieb:
Sehe ich das so richtig?:
EIn Pointer ist ein Typ vom Typ Pointer.Im Grunde genommen stimmt das, in der Praxis wird dennoch zwischen Typen "Pointer auf int" oder "Pointer auf float" unterschieden, auch wenn beides Zeiger sind. Ein reiner Zeiger, der auf keinen Typen zeigt, wäre dann
void*.
-
Danke auch dir nexus - kein Problem - da kann schon mal ein wort daneben liegen und bringt einen aus dem konzept

-
Genau genommen muss ein Zeiger doch einen Typ haben, denn er leifert ja etwas zurück, die Adresse. Und eine Adresse hat ja Zahlen udn Buchstaben...
also im entferntesten so etwas wie ein char, oder?
-
Ein gültiger Pointer enthält einfach die Adresse einer anderen Variablen. Ob das für einen "Typ" ausreicht, weiß ich nicht.
-
also vom typ "adress"

-
Quellcode schrieb:
Genau genommen muss ein Zeiger doch einen Typ haben, denn er leifert ja etwas zurück, die Adresse. Und eine Adresse hat ja Zahlen udn Buchstaben...
also im entferntesten so etwas wie ein char, oder?Das sie Zahlen und Buchstaben hat, liegt daran, dass es ein Hexadezimalwert ist. Das heisst, nur eine Zahl. Du kannst mit
reinterpret_castdie Adresse in einen Integer umwandeln.Aber auch abgesehen davon haben Zeiger Typen, nämlich eben "Zeiger auf int" (
int*) oder "Zeiger auf float" (float*). Das sieht man auch bei der Definition von Variablen (oder der Parameterübergabe), denn da steht normalerweise:<Typ> <Variablenname>; int a; // a hat den Typen "int" int* b; // b hat den Typen "Zeiger auf int"Quellcode schrieb:
also vom typ "adress"

Nein, eben nicht.
-
ok, danke!
-
Wo ist denn das Problem?
a IST ein int und HAT den Wert 9.
b IST ein Zeiger-auf-int und HAT den Wert "Adresse von a".