Bonjour,

Je cherche à faire un tableau "tab" de 4 pointeurs dans lequel je vais mettre les adresses de 4 mots déjà en mémoire quelque part. Je veux ensuite afficher le tableau d'entier contenant les adresses mémoire des 4 mots ainsi que la valeur que contiennent ces adresses. Mais j'obtiens cette erreur à la compilation : Segmentation fault (core dumped).

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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
int main( int argc, char *argv[])
{
	char *mot[4]; // déclaration de 4 chaînes de caractères
	int tab[4]; // déclaration d'un tableau de 4 cases d'entiers
 
	mot[0]="carré";	/************************************/
	mot[1]="rectangle";	/****  initialisation des 4 mots  ***/
	mot[2]="triangle";	/****  quelque part en mémoire  *****/
	mot[3]="rond";		/************************************/
 
	printf("ADRESSE : %d | VALEUR : %s\n",mot[0],*mot);		/* affichage adresse et valeur mot 1*/
	printf("ADRESSE : %d | VALEUR : %s\n",mot[1],*(mot+1));	/* affichage adresse et valeur mot 2*/
	printf("ADRESSE : %d | VALEUR : %s\n",mot[2],*(mot+2));	/* affichage adresse et valeur mot 3*/
	printf("ADRESSE : %d | VALEUR : %s\n",mot[3],*(mot+3));	/* affichage adresse et valeur mot 4*/
 
	tab[0]=(long)&mot[0];	/* on met l'adresse du mot 1 dans le tableau d'entier */
	tab[1]=(long)&mot[1];	/* on met l'adresse du mot 2 dans le tableau d'entier */
	tab[2]=(long)&mot[2];	/* on met l'adresse du mot 3 dans le tableau d'entier */
	tab[3]=(long)&mot[3];	/* on met l'adresse du mot 4 dans le tableau d'entier */
 
 
	/* à partir de la ligne ci-dessous j'ai une erreur : "Segmentation fault (core dumped)" */
	printf("ADRESSE : %d | VALEUR : %s\n",tab[0],*tab);	/* affichage adresse et valeur mot 1*/
	printf("ADRESSE : %d | VALEUR : %s\n",tab[1],*(tab+1));	/* affichage adresse et valeur mot 2*/
	printf("ADRESSE : %d | VALEUR : %s\n",tab[2],*(tab+2));	/* affichage adresse et valeur mot 3*/
	printf("ADRESSE : %d | VALEUR : %s\n",tab[3],*(tab+3));	/* affichage adresse et valeur mot 4*/
 
    return 0;
}
Avez-vous une piste pour résoudre ce problème ?