Frage

Ich habe über eine Linie kommen, die unten angegeben ist

           char *ch=(char*)3000

Ich möchte die Bedeutung dieser Linie wissen .....

Keine korrekte Lösung

Andere Tipps

Es sieht aus wie der Zeiger, ch, wobei eine absolute Speicheradresse 3000. Im Allgemeinen eine sehr schlechte Idee zugeordnet, es sei denn, Sie auf einem embedded System ohne Paging arbeiten und Sie wissen, genau was ist an der Speicherstelle 3000.

Vielleicht wäre relevant, den Rest des Codes zu sehen ...

könnte der Zeiger relativ zu dem Segment , in dem es (auf Intel-Prozessoren) befindet. In diesem Fall könnte der 3000 sein einfach ein Index in dieses Segment, früher im Programm definiert, wo wir die Linien nicht haben.

Dies ist abhängig von der Systemarchitektur, die Umwelt, die das Betriebssystem, der Compiler, der Rest des Codes (und die Programmierer ...).

Ist es nicht offensichtlich?

der numerische Wert "3000" wird auf einen char pointer gegossen, d.h. ch zu Speicheradresse initialisiert 3000 (dezimal).

AFAIK, 3000 ist keine spezielle Adresse / Wert, und in den meisten Fällen den Zugriff auf sie in Segmentierungsfehler oder einen Müll Wert führen würde.

Wenn Sie in Code zu sehen, dass sein kann, es falsch anstelle einem (void *) verwendet wird, sagt bei Karten, wo Sie Schlüsselwertpaare haben, kann das Ergebnis in eine in diesem Fall ganze Zahl gegossen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top