Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ciao a tutti! oggi volevo provare a modificare un po gli inidirizzi dei puntatore, ma ho qualche problema
il codice è questo
Codice sorgente - presumibilmente C++
#include <stdio.h>
void func(int n)
{
int var;
int*p1=&var;
int*p2=&n;
printf("%p\n%p\n",p1,p2);
}
int main(void)
{
func(1);
return0;
}
io vorrei modificare l'indirizzo contenuto in p1 per farlo puntare a n...
se faccio partire il programma ottengo
0xbfe38274
0xbfe38280
quindi c'è una differenza di 6...bit..boh XD
ho provato a usare ++, ma siccome lo tratto come int aumenta di quattro...di che tipo deve essere il puntatore per poter aumentare di 1(bit...boh XD)? e che operazioni dovrei usare? grazie in anticipo
()
Newbie
Messaggi: Iscritto:
Postato alle 13:23
Martedì, 30/12/2008
grazie ma ho risolto...non so come ma va
ho usato il tipo "unsigned char *" e dopo ho fatto p1+=0x09...non ho idea perchè vada XD
il codice è questo
Codice sorgente - presumibilmente C++
#include <stdio.h>
void func(int n)
{
unsignedchar var;
unsignedchar*p1=&var;
int*p2=&n;
p1+=0x09;
printf("%p\n%p\n",p1,p2);
printf("%d\n",*((int*)p1));
}
int main(void)
{
func(1);
return0;
}
EDIT: forse ho capito perchè funziona...il byte è formato da 8 bit...la distanza in memoria tra var e il parametro è di un byte, è puntando al 9 bit (cioe il primo bit del parametro) posso accedervi...
Ultima modifica effettuata da il 30/12/2008 alle 16:20
Ma da cosa deduci che "ora funziona"? Poi vorrei cercare di capire qual'è l'obiettivo del programma...
cercavo un modo per accedere a una ellipsis senza ricorrere al primo parametro...
Comunque a questo proposito non è che sai se posso calcolarne la fine?