Seite 1 von 1
Zeiger (Pointer) in C und PB
Verfasst: 14.06.2021 12:25
von Franky_FR
Hallo,
ich schlage mich immer noch mit Zeigern herum, als Anfänger wohl normal.
In C definiere ich ja einen Zeiger mit
Int * Zeiger
Zuweisen würde ich mit &, also z.B.
x=1000
Zeiger = &x
In PB wäre das dann das @, also *Zeiger=@x
Jetzt kann ich in C mit *Zeiger wieder auf den Inhalt der Speicheradresse zugreifen, ein Println *Zeiger würde also wieder 1000 anzeigen,nicht die Adresse.
Wie geht das in PB ? Ich habe bisher immer nur das @ in der Hilfe gefunden. ??
Re: Zeiger (Pointer) in C und PB
Verfasst: 14.06.2021 12:45
von STARGÅTE
In PureBasic gibt dir *Zeiger immer nur die Adresse zurück.
Wie du den Inhalt ausließt, hängt nun vom Inhalt selbst ab.
Wenn es in deinem Fall eine Integer ist, wäre das z.B. so: PeekI(*Zeiger)
Was auch geht ist dem Zeicher eine Struktur zum Inhalt zu geben und dann diese Struktur zu lesen:
Code: Alles auswählen
Define X.i = 1000
Define *Zeiger.Integer = @X
Debug *Zeiger
Debug *Zeiger\i
Re: Zeiger (Pointer) in C und PB
Verfasst: 14.06.2021 13:57
von Franky_FR
STARGÅTE hat geschrieben: ↑14.06.2021 12:45
In PureBasic gibt dir *Zeiger immer nur die Adresse zurück.
Wie du den Inhalt ausließt, hängt nun vom Inhalt selbst ab.
Wenn es in deinem Fall eine Integer ist, wäre das z.B. so: PeekI(*Zeiger)
Was auch geht ist dem Zeicher eine Struktur zum Inhalt zu geben und dann diese Struktur zu lesen:
Code: Alles auswählen
Define X.i = 1000
Define *Zeiger.Integer = @X
Debug *Zeiger
Debug *Zeiger\i
OK,also Inhalte Speicherstellen nur über Peek, das ist in C ja wirklich anders gelöst.
Das Strukturbeispiel verstehe ich aber überhaupt nicht. Müssen Strukturen nicht deklariert werden ?
Oder ist das irgendeine PB-interne Struktur für Integer ? Wo kommt das Feld \i her ? ich habe versuchsweise mal \d für ein double versucht, aber geht
natürlich nicht
Re: Zeiger (Pointer) in C und PB
Verfasst: 14.06.2021 14:06
von HeX0R
Natürlich hat PB schon einige vordefinierte Strukturen, setze den Cursor einfach auf das .integer, drücke ALT+S und Du siehst die Struktur und alle, die PB sonst noch so kennt.
Für Double, müsstest Du natürlich .double nehmen, dann ginge auch \d
Re: Zeiger (Pointer) in C und PB
Verfasst: 14.06.2021 14:16
von Franky_FR
Korrektur:funktioniert doch, hatte mich vertippt:
Define X.d = 1000.00
Define *Zeiger.double = @X
Debug *Zeiger
Debug *Zeiger\d
Also was PB-internes ?
Re: Zeiger (Pointer) in C und PB
Verfasst: 14.06.2021 14:18
von Franky_FR
HeX0R hat geschrieben: ↑14.06.2021 14:06
Natürlich hat PB schon einige vordefinierte Strukturen, setze den Cursor einfach auf das .integer, drücke ALT+S und Du siehst die Struktur und alle, die PB sonst noch so kennt.
Für Double, müsstest Du natürlich .double nehmen, dann ginge auch \d
Ja, hatte x.i versehentlich stehen lassen, habs dann aber noch gemerkt, siehe Post.
Das mit ALT+S werde ich gleich mal versuchen.