Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Adrese de memorie atribuite pointerilor  (Citit de 5911 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
keenox
Strain


Karma: -5
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« : Iulie 05, 2006, 19:40:11 »

Salut tuturor!
Tocmai am invatat pointerii din c++ si ma intrebam cum pot sa le atribui o adresa propriu-zisa de memorie (0x0000:0x046c). Am facut o functie cu un for care schimba poiterul pe adresa dorita, dar nu prea merge cum doresc. Vreau ceva de genul MemL[$0000:$046c] din Pascal. Multumesc. Uitati functia facuta de mine  Whistle
Cod:
void addr(char * p,int address)
{
 p = NULL;
 for (int i=1;i<=address;i++){
 //printf("%p \n",p);
 p++;
 /*if (i%50==0) {
 cout<<"*** \n";
 getch();
 }*/
 }
}

Si as mai dori sa pot pune orice tip de pointer ca primul parametru al functiei, dar primesc eroare. Cum pot face asta?
Memorat
keenox
Strain


Karma: -5
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« Răspunde #1 : Iulie 06, 2006, 14:47:43 »

 Cry chiar nu shtie nimeni sau nu ati inteles ce vreau??  sad ...Sau ceva de genul

var i:longint absolute $0000:$046c

tot din pascal... Cry

PS: Am observat ca programul considera adresa 0x0001 ca fiind prima din cea alocata lui, deci nu din ram. !?!
« Ultima modificare: Iulie 06, 2006, 14:55:31 de către keenox » Memorat
fluffy
Echipa infoarena
De-al casei
*****

Karma: 71
Deconectat Deconectat

Mesaje: 146



Vezi Profilul
« Răspunde #2 : Iulie 07, 2006, 13:11:19 »

Ii zice casting, ceva de genul:
  ptr = (void *)intval;

Mai ai un pic de invatat despre C/C++.
Memorat
keenox
Strain


Karma: -5
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« Răspunde #3 : Iulie 10, 2006, 18:26:38 »

 Yahoo! mersi mult! stiu ca mai am de invatat destul c++, dar chestia asta am facut-o in pascal si nu am gasit-o pt c++ niciunde...am cautat destul si l-am intrebat si pe un tip care e foarte tare la info si nu shtia...
Memorat
keenox
Strain


Karma: -5
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« Răspunde #4 : Iulie 10, 2006, 21:03:11 »

fluffy, ms inca o data, dar se pare ca tot nu merge cum trebuie... adresa cred ca este relativa fata de memoria alocata programului deoarece am incercat cu adresa 0x046c (ceasul sistemului) si valoarea nu se schimba.. si inca o chestie, am observat ca partea stanga a adresei (0x0000:0x046c) nu este definita cum mi-ai spus tu. ai vreo idee cum as putea sa o definesc? cred ca am incercat toate caracterele speciale si nu functioneaza pt chestia asta (in pascal pt chestia asta se folosesc : (0x0000:0x046c).
« Ultima modificare: Iulie 10, 2006, 22:08:25 de către azotlichid » Memorat
domino
Echipa infoarena
Nu mai tace
*****

Karma: 281
Deconectat Deconectat

Mesaje: 1.340



Vezi Profilul WWW
« Răspunde #5 : Iulie 10, 2006, 23:19:10 »

Foloseste "time.h" si functia clock() ca sa masori timpul de executie, chestia asta cu adrese nu e buna...totusi, daca tii neaparat, poti sa faci asa (in Borland C numai, pe GCC nu cred ca merge):

Cod:
#include <dos.h>
void main(void){
long i=0,t,*time=(long*)MK_FP(0,0x46C);
t=*time;
while (*time-t<182) i++;
}
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines