Wie kann ich in C++ sagen ich möchte eine Variable/einen Zeiger erstellen mit einer bestimmten Adresse(die ich angebe)?

3 Antworten

Wenn du nur eine Variable erstellen willst, und davon die Adresse haben, kannst du die ganz normal erstellen und die Adresse mit dem "&" Operator herausfinden.

int eineZahl = 6;           // Zahl 6
int* eineZahlP = &eineZahl; // Adresse der Variable auf Zahl 6

std::cout << "Variable: " << eineZahl
          << "\nAdresse: " << eineZahlP << "\n";

Die Adresse einfach so eingeben und dann mit std::reinterpret_cast<type*>() in einen Pointer casten, dass du die Adresse benutzen kannst (wie in dem verlinkten Artikel einer anderen Antwort), willst du ziemlich sicher nicht machen, da das meistens eine Speicherzugriffsverletzung geben wird und dein Programm einfach abstürzen lässt (eigentlich immer wenn du std::reinterpret_cast benutzt, solltest du überlegen, was du falsch gemacht hast).

Je nachdem, was du meinst, geht das oder auch nicht.

Mittels Pointern, aber du musst halt Zugriffsrechte auf die Adresse haben.


DeathNoteGood 
Fragesteller
 03.05.2022, 14:34

Naja ich möchte/muss ein CGA Bildschirm/Video Ram ansteuern um sowas wie einen Editor zu programmieren wo man Zeichen eingeben kann und diese dann auf dem Bildschirm angezeigt werden. Um das zu tun muss ich logischerweise zuerst auf die "kleinste" Adresse des Video Ram's zugreifen(0xb8000) . Und ja ich hab Zugriffsrechte auf die Adresse, aber wie genau es mit einem Pointer funktionieren soll weiß ich leider nicht.

1
MaxMustermanOk  03.05.2022, 14:41
@DeathNoteGood

warum programmierst du nicht in Assembler oder einer low-level Programmiersprache wenn du direkt auf die Adresse im RAM zugreifen willst?

1
Destranix  03.05.2022, 14:43
@MaxMustermanOk

Das wäre ja doof, da müsste man den Assemblercode ja selber frickeln.

Ist schon gut, da eine High-Level-Sprache zu verwenden und das den Compilere erledigen zu lassen.
Außer man will basteln oder experimentieren.

1
MaxMustermanOk  03.05.2022, 14:50
@Destranix

klingt doch schon ein bischen so als ob der Fragensteller experimentieren will 😅

In einem C++ Programm würde mir nie in den Sinn kommen, direkt auf Register zuzugreifen. Sowas kann man vielleicht auf einem µC oder mit einem fpga machen aber bei einem normalen Rechner mit Betriebssystem und Speicherverwaltung wäre ich da vorsichtig :D

1
Destranix  03.05.2022, 14:52
@MaxMustermanOk

Man müsste halt schauen, dass man die Compileparameter passend setzt, sodass da Code rauskommt, der auf der CPU auch nach eventueller Entkopplung vom Betriebssystem läuft.

Hängt aber stark davon ab, was genau der Fragensteller tatsächlich machen möchte denke ich.

1
DeathNoteGood 
Fragesteller
 03.05.2022, 15:00
@MaxMustermanOk

Weil aus meiner Sicht Assembler schwieriger ist als C++(oder irgendeine andere Hochsprache)

1
DeathNoteGood 
Fragesteller
 03.05.2022, 15:03
@MaxMustermanOk

Also Experimentieren will ich jetzt gerade nicht unbedingt(wobei ich schon gerne wissen würde was möglich ist und was nicht). Ich studiere gerade und hab das Modul Betriebssysteme in welchen wir eine paar Aspekte des Betriebssystems entwickeln/programmieren müssen unteranderem ein Art von Editor., als Sprache dürfen wir c++ und Assembler nutzen.

1