Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - operare su indirizzi...
Forum - C/C++ - operare su indirizzi...

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
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++

  1. #include <stdio.h>
  2.  
  3. void func(int n)
  4. {
  5.     int var;
  6.     int *p1=&var;
  7.     int *p2=&n;
  8.     printf("%p\n%p\n",p1,p2);
  9. }
  10.  
  11. int main(void)
  12. {
  13.     func(1);
  14.     return 0;
  15. }



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 :)

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 13:23
Martedì, 30/12/2008
grazie ma ho risolto...non so come ma va :rotfl:
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++

  1. #include <stdio.h>
  2.  
  3. void func(int n)
  4. {
  5.     unsigned char var;
  6.     unsigned char *p1=&var;
  7.     int *p2=&n;
  8.     p1+=0x09;
  9.     printf("%p\n%p\n",p1,p2);
  10.     printf("%d\n",*((int *)p1));
  11. }
  12.  
  13. int main(void)
  14. {
  15.     func(1);
  16.     return 0;
  17. }



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
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6109
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 3:02
Sabato, 03/01/2009
Ma da cosa deduci che "ora funziona"? Poi vorrei cercare di capire qual'è l'obiettivo del programma...


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 21:36
Lunedì, 05/01/2009
Testo quotato

Postato originariamente da pierotofy:

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?

PM Quote