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. ??
Zeiger (Pointer) in C und PB
Re: Zeiger (Pointer) in C und PB
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:
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
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Zeiger (Pointer) in C und PB
OK,also Inhalte Speicherstellen nur über Peek, das ist in C ja wirklich anders gelöst.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
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
- HeX0R
- Beiträge: 2961
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 - Kontaktdaten:
Re: Zeiger (Pointer) in C und PB
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
Für Double, müsstest Du natürlich .double nehmen, dann ginge auch \d
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}
Re: Zeiger (Pointer) in C und PB
Korrektur:funktioniert doch, hatte mich vertippt:
Define X.d = 1000.00
Define *Zeiger.double = @X
Debug *Zeiger
Debug *Zeiger\d
Also was PB-internes ?
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
Ja, hatte x.i versehentlich stehen lassen, habs dann aber noch gemerkt, siehe Post.
Das mit ALT+S werde ich gleich mal versuchen.