Seite 1 von 1

Zeiger auf Zahlen vs. Zeiger auf Strings

Verfasst: 09.02.2021 18:52
von 4Planes
Hallo!

Ich habe eine einfache Frage:
Warum geht das?
*var_Pointer = @"This is a string"
Debug PeekS(*var_Pointer)

Aber das nicht?
*var_Pointer = @1234567890
Debug PeekI(*var_Pointer)
Das Zweite geht nur über den Umweg:
var_Zahl.i = 1234567890
*var_Pointer = @var_Zahl
Debug PeekI(*var_Pointer)
Die Fehlermeldung, die PB für den zweiten Codeschnipsel anzeigt, ist übrigens recht interessant - und verwirrend:
Eine Prozedur kann auf PowerPC Prozessoren nicht mehr als neun Parameter haben.

Re: Zeiger auf Zahlen vs. Zeiger auf Strings

Verfasst: 09.02.2021 19:56
von NicTheQuick
Strings werden nach der Kompilierung in einer Datasection, meist gegen Ende des resultierenden Binary gespeichert. Das heißt jede Repräsentation eines Strings ist sowieso immer ein Pointer auf einen Speicherbereich, in dem dieser liegt.
Bei Zahlen ist das nicht so. Die passen wunderbar in ein einzelnes Prozessor-Register und müssen nicht referenziert werden. Deswegen kann man von ihnen auch nicht direkt einen Pointer "nehmen", sondern nur dann, wenn ihr Wert in einer Variablen gespeichert ist, die sich an einer definierten Stelle im Speicher befindet.

Re: Zeiger auf Zahlen vs. Zeiger auf Strings

Verfasst: 09.02.2021 20:06
von 4Planes
Danke für die flotte Antwort! :allright: