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. ?? :roll:

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 :wink:

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