un pointeur peut-il remplacer un tableau ?
bonjour,
en essayant de compacter mon code je suis arriver a une solution qui fonctionne mais je ne comprend pas bien pourquoi, bizarre direz vous.
voila j'utilise une procedure qui convertit un code decimale (ici unsigned short donc 16 bit) en code ascii, je passe en argument la valeur decimale, la procedure crée un tableau de 3 valeur contenant les code ascii pour centaine, dizaine et unité.
la procedure renvoi alors l'adresse du tableau.
voici cette procedure:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
//procedure qui renvoi un pointeur sur un tableau
unsigned char* conversion_short_Ascii_C_D_U (unsigned short valeur_decimale) {
unsigned char tbl[3];
unsigned char centaine;
unsigned char dizaine;
unsigned char unite;
centaine = valeur_decimale / 100;
dizaine = (valeur_decimale % 100 ) / 10;
unite = (valeur_decimale % 100 ) % 10;
centaine = conv_Ascii (centaine);
dizaine = conv_Ascii (dizaine);
unite = conv_Ascii (unite);
if (centaine == '0'){
centaine = ' ';
if (dizaine == '0') {
dizaine = ' ';
}
}
tbl[0] = centaine;
tbl[1] = dizaine;
tbl[2] = unite;
return & tbl;
} |
dans un premier temps j'utilisait un pointeur pour recuperer ces trois valeur, comme ceci.
Code:
1 2 3 4 5 6 7 8 9
|
unsigned char *pt_sur_char;
pt_sur_char = conversion_short_Ascii_C_D_U (123);
tbl_buffer_EA [0] = *pt_sur_char ; //centaine
pt_sur_char ++;
tbl_buffer_EA [1] = *pt_sur_char ; //dizaine
pt_sur_char ++;
tbl_buffer_EA [2] = *pt_sur_char ; //unité |
mais en testant deux trois truc, j'ai vu que je pouvais aussi l'ecrire comme ceci:
Code:
1 2 3 4 5 6 7
|
unsigned char *pt_sur_char;
pt_sur_char = conversion_short_Ascii_C_D_U (123);
tbl_buffer_EA [0] = pt_sur_char[0] ; //centaine
tbl_buffer_EA [1] = pt_sur_char[1] ; //dizaine
tbl_buffer_EA [2] = pt_sur_char[2] ; //unité |
les resulats sont bon mais est ce correcte d'utiliser cette syntaxe.
je ne comprend pas pourquoi j'ai une erreur de compilation si je definit
unsigned char pt_sur_char [3]
comme tableau au lieu d'un pointeur comme ceci:
unsigned char *pt_sur_char;
quand je fais
pt_sur_char = conversion_short_Ascii_C_D_U (123);
je renvoi bien une adresse à un tableau mais cela ne veux pas se compiler.
pouvez vous m'eclairer la dessus?
merci de votre aide.