Go Down

Topic: Erreur de syntaxe sur pointeurs (Read 1 time) previous topic - next topic

Voilelec

Meilleurs vœux les Arduinotes

Je bloque sur un problème de syntaxe en voulant lire le contenu d'une case mémoire.

L'utilisation de ce  pointeur " *contentMem " me plante tout !

Voyez-vous où se situe mon erreur ?

Merci

// ***************************************************************
// Essai d'affichage du contenu d'une adresse mémoire
void setup()
{                       
Serial.begin(115200);

int value = 0xAA  ;
long address = (int) &value  ;  // recupère l'adresse

int *contentMem ;

[font=Verdana]*contentMem = (int)address ;         // crash mémoire, reboot PC[/font]
             
Serial.print ("     address =  ") ;       
Serial.print (address) ;     
Serial.print ("           content =  ") ;     
Serial.println (*contentMem) ;       

}

// *******************************************
void loop()
  {
  }
 
// *******************************************

fdufnews

*contentMem c'est le contenu de l'adresse à laquelle pointe contentMem

Pour affecter une adresse à un pointeur il faut:
Code: [Select]

int value = 0xAA  ;
int address = (int) &value  ;  // recupère l'adresse (un int est suffisant vu la taille de la RAM)
int *contentMem ;

contentMem = (int *)address ;         // équivalent à contentMem = &value ;



Grag38

Cette écriture n'est pas bonne :

*contentMem = (int)address ;  


Comme contentMem est déjà déclaré comme pointeur, il suffit d'écrire :

contentMem = &value;

et ca fonctionne...

cela veut dire : contentMem pointe sur la case de la memoire value.

Ensuite *contentMem lit la valeur de cette case mémoire en considerant le type de contentMem.

Voilelec

Merci à vous deux, j'avais le cerveau trop embrumé après les fêtes.


Je n'avais plus fait de C depuis 10 ans, développant exclusivement en assembleur, mais cela revient doucement grâce à l'Arduino...

Go Up