Hello, je refais du C (avec SDCC) et évidemment je perds les pédales (et la tête un peu). Si des pro du C peuvent m'aider… J'explique :

Je crée une structure (pour un point 2D, avec son adresse dans la mémoire vidéo, pour ne pas la recalculer plus tard), je crée un tableau de cette structure (une quarantaine de « points » pour me faire un starfield basique). je fais une fonction pour créer mes 40 points et les remplir. Je lui passe le tableau sous forme de pointeur, car j'aimerais bidouiller le contenu du tableau plus tard, en dehors de cette fonction. A priori, tout semble marcher mais en réalité, si j'essaie de lire le tableau après le passage dans la fonction, les valeurs ne sont pas là. donc en gros, il n'a pas modifié le tableau (malgré le pointeur) mais sans doute une copie ?

Bref, je mets le code (juste les bouts concernés). Si quelqu'un peut me dire où ça coince pour passer un tableau de struct en paramètre et non une copie ?
MERCI !

Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct _point2D
{
 unsigned char X;
   unsigned char Y;
 unsigned char *Adress;
};
struct _point2D TAB_stars[STARS_NUM];
void Stars_Create(struct _point2D *TAB_stars_init[])
{
 unsigned char i = 0;
 for(i = 0; i < STARS_NUM; i++)
 {
 (*TAB_stars_init[i]).X = rand() % (MAX_X+1);
 ...
     (*TAB_stars_init[i]).Adress = Mode0_Pixel_Compute_Adress((*TAB_stars_init[i]).X, (*TAB_stars_init[i]).Y,(unsigned int)0xC000);
 *(*TAB_stars_init)[i].Adress|=0b10000000;
...
}
Stars_Create(&TAB_stars);

ici si je veux lire dans TAB_stars[x].Adress je n'ai pas les bonnes valeurs créés dans la fonction (j'ai mis un print dans la fonction et un en dehors et les valeurs ne correspondent pas... j'en déduis que ce qui est modifié dans la fonction est "resté" dans la fonction... HELP !

ps : je travaille sur SDCC pour une machine 8 bits.