CLASS, 0x, File, Pointer
-
Hi Leute,

ich hätte da vier Fragen:
(1)
Ich würde gerne wissen, was "CLASS" in einer c-Datei zu bedeuten hat.
Z. B.: void CLASS verschieben()(2)
wert1 = 0xffff;
wert2 = 0x10;
wert3 = 0xc5;
=> Wieso macht man das? Wieso gibt man nicht anstatt "0xffff" sofort 65535 ein.(3)
File -> offset = Number of bytes to offset from origin.
Kann mir das einer genauer erklären.(4)
Wie kann ich folgende Pointer in Java umschreiben?
*variable
**variable
-
tempomat123 schrieb:
(1)
Ich würde gerne wissen, was "CLASS" in einer c-Datei zu bedeuten hat.
Z. B.: void CLASS verschieben()CLASS wird in dem fall vermutlich ein define sein. aus dem kontext oben, würde ich mal drauf tippen, dass es sich um eine aufrufkonvention handelt. warum das teil CLASS genannt wurde, kann ich dir nicht sagen...
tempomat123 schrieb:
(2)
wert1 = 0xffff;
wert2 = 0x10;
wert3 = 0xc5;
=> Wieso macht man das? Wieso gibt man nicht anstatt "0xffff" sofort 65535 ein.weil hexadezimale schreibweise, wenn man es gewohnt ist, recht praktisch sein kann. bei 0xffff sieht man sofort, dass alle 4 nibbles der zahl auf 1111b stehen.
tempomat123 schrieb:
(3)
File -> offset = Number of bytes to offset from origin.
Kann mir das einer genauer erklären.File wird ein pointer auf ein struct sein. der -> operator bedeutet das selbe wie (*File).offset
tempomat123 schrieb:
(4)
Wie kann ich folgende Pointer in Java umschreiben?
*variable
**variabledass es in java pointer gibt, wär mir neu...
-
Also: zu 1. In C gibt es keine Klassen. Ich nehme an, da es groß geschrieben ist, dass dies ein Makro sein wird (schriebt man üblicherweis groß)! Schau mal nach ob ein dam c-File noch irgendwo #define CLASS ... steht, oder in einer der include-Files.
zu 2. Man kann so einfacher Dualzahlen angeben. Man diese als Flags verstehen, um speicher zu sparen. Z.B. kann man verschiedene binäre Einstellungen in eine Variablen speichern, statt 16 Variablen zu benötigen. Beispiel: Du hast zwei Status a und b. Beide sind binär, also 0 oder 1. Anstelle jetzt
int a=0; int b=1;zu schreiben, packt man das üblicherweise in eine Variable z.B.
short state=0x2; // also: 0010, wobei die 3. Stelle b und die 4. a sein solloder man verwendet diese schreibweise auch für Bitmasken
zu 3. Du hast einen Pointer auf eine (eingelesene) Datei, genauer Dateianfang( origin ). Wenn du jetzt 10. Byte in der Datei haben willst, ist das das 10. Offset als Adresse. Ein Offset gibt also eine Adresse in einer Datei vom Anfang diese an.
zu 4. ich kann kein Java
-
Danke für die bisherigen Antworten.

Aber nochmal zu Punkt 1) Ich habe nun nachgeschaut und oben steht folgendes zur CLASS:
#define CLASSDas ist aber auch alles. Nach CLASS steht nichts, wie ihr sehen könnt. Was hat das zu bedeuten?
-
tempomat123 schrieb:
#define CLASSDas ist aber auch alles. Nach CLASS steht nichts, wie ihr sehen könnt. Was hat das zu bedeuten?
dass das CLASS durch nichts ersetzt wird.
void CLASS verschieben()wird also zu
void verschieben()ich denke der sinn ist der, dass man z.d. den define zu
#define CLASS __stdcalländern kann und dann automatisch alle so deklarierten funktionen die __stdcall aufrufkonvention verwenden...
-
tempomat123 schrieb:
Danke für die bisherigen Antworten.

Aber nochmal zu Punkt 1) Ich habe nun nachgeschaut und oben steht folgendes zur CLASS:
#define CLASSDas ist aber auch alles. Nach CLASS steht nichts, wie ihr sehen könnt. Was hat das zu bedeuten?
Da steht bei der Version die du hast nichts, aber es kann gut sein, dass es Versionen gibt bei denen da etwas steht. Oder aber es stammt noch aus alten Versionen und wird heute nicht mehr gebraucht.
-
Danke.

-
dot schrieb:
tempomat123 schrieb:
(4)
Wie kann ich folgende Pointer in Java umschreiben?
*variable
**variabledass es in java pointer gibt, wär mir neu...
Java nutzt Pointer, wenn gleich es das vor dem Anwender verbirgt. Das beginnt schon mit der Java-Referenz: Die Referenz in Java wird zwar syntaktisch etwa wie eine Referenz in C++ verwendet, aber ist funktionell eher mit einem Pointer verwand (z.B. Zuweisung von null).
Auf die Frage des Originalposters zurückzukommen: Ich habe mich lange Zeit nicht mehr mit Java befasst, aber wie schon angedeutet kann man die Sachen nicht 1:1 beschreiben.
cu André
-
asc schrieb:
Java nutzt Pointer, wenn gleich es das vor dem Anwender verbirgt.
dass eine Java implementierung intern pointer benutzt ist sicher richtig. das bedeutet aber nicht, dass man in Java pointer verwenden kann!?
außerdem zeigt der code des op eigentlich zwei verschiedene dereferenzierungen. auf die frage wie man das in java umschreibt kann man eigentlich nur zwei dinge antworten:
- in java gibts keine pointer (zumindest ist mir nichts dergleichen bekannt)
- aufgrund von 1) wird man in java kaum pointer dereferenzieren können
ohne den sinn des codes zu kennen, kann man wohl kaum eine semantisch äquivalente implementierung in java angeben...
-
@dot:
dass eine Java implementierung intern pointer benutzt ist sicher richtig. das bedeutet aber nicht, dass man in Java pointer verwenden kann!?
Scheint mir, dass Du nicht verstanden hast was asc geschrieben hat.
Die Referenz in Java wird zwar syntaktisch etwa wie eine Referenz in C++ verwendet, aber ist funktionell eher mit einem Pointer verwand (z.B. Zuweisung von null).
Es muss nicht immer ein * haben damit etwas als Pointer qualifiziert...
Simon
-
simon.gysi schrieb:
Scheint mir, dass Du nicht verstanden hast was asc geschrieben hat.
dann zeig mir bitte wie du in java eine variable vom typ eines pointers auf einen anderen typ deklarierst!?
-
Vielleicht kannst Du erstmal zeigen, wie man in C++ einen Pointer auf einen Typen deklariert? Ich dachte immer, man könne nur auf Variablen/Objekte zeigen und nicht auf Typen.
-
Jester schrieb:
Vielleicht kannst Du erstmal zeigen, wie man in C++ einen Pointer auf einen Typen deklariert? Ich dachte immer, man könne nur auf Variablen/Objekte zeigen und nicht auf Typen.
int *p;Das war einfach. p hat den Typ "Pointer auf int", nicht "Pointer auf eine noch zu bestimmende int-Variable oder ein anderes int-Objekt, z.B. ein Element eines Arrays, könnte aber auch ein Nullpointer sein".

-
Jester schrieb:
Vielleicht kannst Du erstmal zeigen, wie man in C++ einen Pointer auf einen Typen deklariert?
TMetaClass* mc;*scnr*
-
dot schrieb:
dann zeig mir bitte wie du in java eine variable vom typ eines pointers auf einen anderen typ deklarierst!?
Ich bin mir über die Javasyntax leider nicht mehr sicher, aber im wesentlichen ist im folgenden:
public class xyz... xyz var = new xyz();var ein Zeiger der aber nach außen wie eine Reverenz verwendet wird auf ein Objekt der Klasse xyz. Daher müsste (wenn ich mich nicht irre) in Java auch folgendes gehen:
var = null;Man könnte zwar auch mit Reverenzen etwas ähnliches machen (Vererbung und "Null"-Klasse) aber im wesentlichen sind es hierbei Zeiger. Ja, sie haben nur Referenzsemantik, aber nichts desto trotz entsprechen sie eher den C++ Zeigern als den C++ Referenzen.
cu André