Merci pour ce tuto.
Je veux obtenir le contenu d'une adresse absolue ( ex : contenu de l'adresse 0x0200 ).
J'y arrive mais avec une expression très compliquée.
Merci pour ce tuto.
Je veux obtenir le contenu d'une adresse absolue ( ex : contenu de l'adresse 0x0200 ).
J'y arrive mais avec une expression très compliquée.
Comment faire au plus simple?
Merci.
Cordialement,
bidouilleelec
Comme expliqué un pointeur doit avoir un type de données pointée et se note avec une étoile; Donc si vous avez un long par exemple qui commence à l'adresse 0x0200 vous pourriez écrire
long* ptr = (long*) 0x0200;
pour être un peu plus précis, comme on sait qu'une adresse est un uint16_t sur nos arduinos, pour s'assurer que c'est ce que le compilateur prendra on pourrait écrire
faites tourner une fois ce code et regardez l'adresse du tableau. Sur mon MEGA ça dit 512. donc ensuite enlevez les commentaires, ajoutez 2 à cette adresse (la longueur d'un int) et mettez ça dans xPtr2.
vous verrez alors dans le printf la valeur 33 - on aura pointé physiquement sur la bonne case mémoire
Merci J-M-L pour cet excellent tuto. Peut-être que tu peux ajouter un ou deux exemples concrets, voire classiques, pour lesquels les pointeurs sont incontournables ? Ou du moins utiles.
Ma difficulté avec les pointeurs vient je pense du fait que je n'ai que rarement l'occasion de les utiliser, donc j'oublie à chaque fois ce que j'ai appris la dernière fois.
J'ai eu le cas aujourd'hui pour la modification du contenu d'un tableau par une fonction. Et j'ai ramé...
lesept:
Merci J-M-L pour cet excellent tuto. Peut-être que tu peux ajouter un ou deux exemples concrets, voire classiques, pour lesquels les pointeurs sont incontournables ? Ou du moins utiles.
bonne idée
voici un exemple que je rajouterai là bas
int tableau[] = {1, 2, 3, 4, 5};
const size_t taille = sizeof(tableau) / sizeof(tableau[0]);
void plus10(int* t, int tailleDuTableau)
{
for (int i = 0; i < tailleDuTableau; i++)
*(t + i) = *(t + i) + 10;
}
void imprimeTableau(int* t, int tailleDuTableau)
{
for (int i = 0; i < tailleDuTableau; i++) Serial.println(*(t + i));
Serial.println("----");
}
void setup() {
Serial.begin(115200);
imprimeTableau(tableau, taille);
plus10(tableau, taille);
imprimeTableau(tableau, taille );
plus10(tableau, taille);
imprimeTableau(tableau, taille);
}
void loop() {}