Bonjour,
Voilà, j'ai un petit problème avec un pointeur sur un tableau d'entier.
Ce pointeur est définis comme tel dans un header :
1 2 3 4 5 6 7 8 9
|
#ifndef _SERVER_RESOURCES_H_
#define _SERVER_RESOURCES_H_
...
int * array_ptr;
int create_array(void);
#endif /* _SERVER_RESOURCES_H_ */ |
Lorsque je démarre mon programme "server", j'alloue et initialise ce pointeur grâce à la fonction :
1 2 3 4 5 6 7 8 9 10 11 12 13
|
int create_array(void)
{
int i;
srand(time(NULL));
array_ptr = (int *)malloc(ARRAY_SIZE * sizeof(int));
for(i = 0; i < ARRAY_SIZE; i++)
*(array_ptr+i) = rand()%19 + 1;
return 0;
} |
Jusque là tout ce passe bien mais le problème survient quand je désire modifier les valeurs de ce tableau. En effet, j'ai beau lui attribuer une nouvelle valeur avec (ces fonctions se trouvent dans un autre fichier qui inclut le "server_resources.h" du dessus) :
1 2 3 4 5 6 7 8 9 10 11 12 13
|
int setI(int i, int val)
{
printf("SETI : %d\n", val);
if(i >= 0 && i < ARRAY_SIZE)
{
*(array_ptr+i) = val;
return 0;
}
return -1;
} |
celle-ci ne veut pas changer. Elle se modifie uniquement dans la fonction or j'aurais besoin qu'il se modifie de manière globale pour que lorsque j'appelle une autre fonction, celle-ci s'exécute sur les nouvelles valeurs. Ce que je croyais possible en déclarant le pointeur dans le .h.
Merci.
Partager