Go Down

Topic: [résolu] Problème concaténation (Read 1 time) previous topic - next topic

barbudor

#5
Jul 01, 2012, 11:24 am Last Edit: Jul 01, 2012, 11:30 am by barbudor Reason: 1

Edit: J'ai été grilled en beauté par barbudor :smiley-zipper:


Chacun son tour ;)

Quote
/* (2 * i) n'est pas portable, mieux vaut utiliser (sizeof(int) * i) */


j'en profite au passage pour rappeler qu'en C l'arithmétique sur les pointeur prend en compte la taille de l'objet pointé.
donc

int capteur[5];
int *PtrCapteur = &capteur[0];

*(PtrCapteur+i) est donc équivalent à capteur : glop
*(PtrCapteur+sizeof(int)*i) est donc équivalent à capteur[sizeof(int)*i] : pas-glop


Ce que Skywodd fait d'ailleur très bien dans sont autre code avec *(ptr + i)
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

skywodd


Quote
/* (2 * i) n'est pas portable, mieux vaut utiliser (sizeof(int) * i) */


j'en profite au passage pour rappeler qu'en C l'arithmétique sur les pointeur prend en compte la taille de l'objet pointé.
donc

Oui c'est bon à préciser.

Ce commentaire est à voir dans le contexte du code de Super_Cinci.
On voyait bien que ce (2 * i) correspondait à la taille du int, mais vu que c'était pas vraiment de l'arithmétique de pointeur (voir même du C :smiley-mr-green:) je me suis dit que ça serait pas plus mal de le préciser.

Bref tout ça pour dire, AspiGeek si tu veut avoir à prendre de l'aspirine (oui je sait, jeu de mot de merde ...) utilise la version simple et optimisé ;)
Un tableau pour les valeurs et un tableau pour les broches.
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

AspiGeek

Merci à tous pour vos réponses complètes et précises, je les ai lu avec attention  :)
Travaillant principalement sur des langages interprétés ces notions de pointeurs ne me sont pas familières malheureusement.
J'avais déjà mis en place la solution avec array, je m'interrogeais sur le fait si on pouvait sans passer via une syntaxe de concaténation particulière, un minimum de connaissance en C m'aurait donc évité cette question...

Va falloir que je m'y plonge sérieusement et prendre un peu d'aspirine  ;)

Merci encore. ++

Super_Cinci

J'avais écrit un peu vite, c'était juste pour donner des pistes de réflexion. En effet, je suis tout à fait d'accord que :

- mes codes ne sont pas à prendre pour exemple (c'était juste l'idée d'une méthode)
- les variables peuvent se trouver n'importe-où en mémoire, donc pas forcément dans l'ordre de déclaration.
- d'une carte à l'autre, les constantes A0, A1, ..., An peuvent prendre n'importe quelles valeurs

et les autres points aussi.

je voulais juste évoquer les différentes méthodes, mais la solution avec les deux tableaux est largement préférable. Finalement, la question d'AspiGeek était juste "les noms de variables sont-ils conservés à la compilation", et nous y avons répondu, je crois  XD

on n'est donc pas trop loin de la balise [résolu].

osaka

Yop Yop,
Juste une dernière petite explication, il faut bien comprendre que tous le code que nous écrivons ne sont que des instructions destinés au compilateur et non à la machine directement, le code (machine) résultant est tout autres.
Le type de variable (qu'il peut retravailler pour optimiser, etc) et les noms à la déclaration par exemple ne sont que des "repères" qui seront traité et disparaitrons une fois compilé.

Go Up