Zeiger (Pointer) in C und PB

Anfängerfragen zum Programmieren mit PureBasic.
Franky_FR
Beiträge: 53
Registriert: 08.05.2019 10:06

Zeiger (Pointer) in C und PB

Beitrag 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. ?? :roll:
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Zeiger (Pointer) in C und PB

Beitrag 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
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
Franky_FR
Beiträge: 53
Registriert: 08.05.2019 10:06

Re: Zeiger (Pointer) in C und PB

Beitrag 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 :)
Benutzeravatar
HeX0R
Beiträge: 2954
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

Beitrag 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 :wink:
Franky_FR
Beiträge: 53
Registriert: 08.05.2019 10:06

Re: Zeiger (Pointer) in C und PB

Beitrag 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 ?
Franky_FR
Beiträge: 53
Registriert: 08.05.2019 10:06

Re: Zeiger (Pointer) in C und PB

Beitrag 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 :wink:
Ja, hatte x.i versehentlich stehen lassen, habs dann aber noch gemerkt, siehe Post.
Das mit ALT+S werde ich gleich mal versuchen.
Antworten