Avatar billede brhino Nybegynder
23. maj 2003 - 14:27 Der er 5 kommentarer og
1 løsning

Array spørgsmål

Som sagt tidligere er jeg for nyligt så småt begyndt at gå over til C++. Men jeg støder hele tiden ind i små problemer... Denne gang med arrays... Jeg har læst en fil ind i hukommelsen vha. ReadFile og GlobalAlloc og vil nu ændre noget i den allokerede hukommelse, men hvordan ???

I ASM ville jeg have gjort følgende :

MOV EAX, [PladsIHukommelse]
ADD EAX, 1000
MOV [EAX], 12345678h

Jeg er kommet så langt her i C++:

int memory;
memory = ((UINT) PladsIHukommelse) + 0x1000;

... men hvad så ??? Lige meget hvad jeg gør, ter den sig !! Hvordan laver jeg kommandoen MOV [EAX], 12345678h i C++

Håber I kan hjælpe med dette "temmelig simple" spørgsmål !!

BRhino
Avatar billede arne_v Ekspert
23. maj 2003 - 14:35 #1
Noget i retning af:

int *memory = (int *)((char *)PladsIHukommelse + 1000);
*memory = 0x12345678;
Avatar billede brhino Nybegynder
23. maj 2003 - 15:03 #2
Det virker fremragende !!! Tak, men hvorfor (int *)(char *) og ikke blot (UINT) ??
Avatar billede arne_v Ekspert
23. maj 2003 - 16:24 #3
* er strengt påkrævet fordi det her er pointere.

Du kunne sikkert godt have brugt UINT* i stedetfor int*, så havde
du fået en pointer til unsigned int istedetfor til signed int.

char* er ikke nødvendigt hvis PladsIHukommelse allerede var char*,
men jeg ville være helt sikke rpå at +1000 blev +1000 char og ikke
+1000 ints.
Avatar billede brhino Nybegynder
24. maj 2003 - 09:43 #4
Jeg forstår nogenlunde .... LOL ! Men så har jeg endnu et spørgsmål ....

Før jeg sendte dette, havde jeg skrevet noget lignede dette:

int memory;
memory = ((UINT) PladsIHukommelse) + 0x1000;
*memory = 0x12345678;

Hvorfor vil dette ikke kompileres når

int *memory = (int *)((char *)PladsIHukommelse + 1000);
*memory = 0x12345678;

gerne vil ???

hehe, jeg spørger bare ?!?!?
Avatar billede arne_v Ekspert
24. maj 2003 - 10:26 #5
Fordi du havde erklæret memory til en int ikke til en pointer til int.
Avatar billede brhino Nybegynder
24. maj 2003 - 15:13 #6
oh, javel !! Nu forstår jeg ... Takker !
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester