Bonjour,

Lors de l'exécution de mon programme, les valeurs d'un de mes tableaux sont modifiées involontairement au moment où les valeurs d'un autre tableau sont modifiées.

Lorsque j'affiche les adresses des éléments de ces deux tableaux, je m'aperçois que plusieurs d'entre elles sont identiques. D'où le conflit.

Le premier tableau est défini dans mon main.c ainsi:

Le second tableau appartient à la structure suivante déclarée dans un .h

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
typedef struct elements_ {
  INT    *  numelt;            
 
  INT    *  pconnect;          /* liste des pointeurs sur la connectivite des 
                                  elements dans 'connectivite' 
 
}ELEMENTS;
Si j'affiche les adresses de ces deux tableaux avec les lignes suivantes:

NB: "p1" est un pointeur qui a pris pour valeur "elements.pconnect"
"nb_elt" est la dimension de pconnect

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
	for (i=0;i<nb_elt+1;i++){
	printf("p1[%d] = %d \t à l'adresse %d \n",i,p1[i],&p1[i]);
	}
et,

Code : Sélectionner tout - Visualiser dans une fenêtre à part
	for(i=0;i<14;i++)printf("&caraelemress[%d] = %f\t à l'adresse %d \n",i,caraelemress[i],&(caraelemress[i]));
je récupère dans mon terminal respectivement:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
p1[0] = 1 	 à l'adresse 235837680 
p1[1] = 9 	 à l'adresse 235837684 
p1[2] = 17 	 à l'adresse 235837688 
p1[3] = 19 	 à l'adresse 235837692 
p1[4] = 21 	 à l'adresse 235837696 
p1[5] = 23 	 à l'adresse 235837700 
p1[6] = 25 	 à l'adresse 235837704
et,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
&caraelemress[0] = 210000.000000	 à l'adresse 235837632 
&caraelemress[1] = 0.000000	 à l'adresse 235837640 
&caraelemress[2] = 0.000000	 à l'adresse 235837648 
&caraelemress[3] = 0.000000	 à l'adresse 235837656 
&caraelemress[4] = 0.000000	 à l'adresse 235837664 
&caraelemress[5] = 0.000000	 à l'adresse 235837672 
&caraelemress[6] = 0.000000	 à l'adresse 235837680 
&caraelemress[7] = 0.000000	 à l'adresse 235837688 
&caraelemress[8] = 0.000000	 à l'adresse 235837696 
&caraelemress[9] = 0.000000	 à l'adresse 235837704 
&caraelemress[10] = 0.000000	 à l'adresse 235837712 
&caraelemress[11] = 0.000000	 à l'adresse 235837720 
&caraelemress[12] = 0.000000	 à l'adresse 235837728 
&caraelemress[13] = 0.000000	 à l'adresse 235837736
Entre autres, p1[2] et caraelemress[7] ont la même adresse.

Avez-vous une idée d'où cette erreur peut venir ?

Merci d'avance

Anthony