Pointeur de pointeur de pointeur

Signaler
Messages postés
3
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
26 septembre 2010
-
Messages postés
92
Date d'inscription
samedi 26 mars 2005
Statut
Membre
Dernière intervention
23 septembre 2015
-
Salut, quelqu'un peut-il me dire pourquoi à partir de la 3emme adresse de **a est égale à 0?

code :

char* EnerconTextAlTest3(char* NamePark,int NumAlPrinc,int NumAlSec,int NumEol)
{

char ***a,*c1,***a1,*c2;
char **a2,**b;
int i1,i2=0;

a=(char***)malloc(442*sizeof(char**));
*a=(char**)malloc(1000*sizeof(char*));
**a==(char*)malloc(100*sizeof(char));
c1=(char*)malloc(100*sizeof(char));

a1=a;

a=a1+0;
printf("adresse de *a : %d\n",a);
printf("adresse de **a : %d\n",*a);
printf("adresse de *a : %d\n",a);
printf("adresse de **a : %d\n\n",*a);
a=a1+1;
printf("adresse de *a : %d\n",a);
printf("adresse de **a : %d\n\n",*a);
a=a1+2;
printf("adresse de *a : %d\n",a);
printf("adresse de **a : %d\n\n",*a);


a=a1+3;
printf("adresse de *a : %d\n",a);
printf("adresse de **a : %d\n\n",*a);

return "test3";

free(a);
free(*a);
free(**a);
free(c1);

}

résulta:

adresse de *a : 4138736
adresse de **a : 4140512
adresse de *a : 4138736
adresse de **a : 4140512

adresse de *a : 4138740
adresse de **a : 4133936

adresse de *a : 4138744
adresse de **a : 0

adresse de *a : 4138748
adresse de **a : 0

le text d'alarme est test3

Process returned 0 (0x0) execution time : 0.072 s
Press any key to continue.

Merci.

4 réponses

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
Salut,
tu as un = en trop sur la ligne ou malloc ton **a.
Messages postés
3
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
26 septembre 2010

En effet, mais malheureusement ça ne change rien.

En fait mon but est d'extraire une chaîne de caractère hors d'un tableau, en fonction de deux codes. Pour chaque code principal (+/-442) il peut y avoir 1000 codes secondaires qui eux-même correspondent à un texte.

En vous remerciant.
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
Bonjour,
As-tu essayé ton code en initialisant tes tableaux avec 0 après l'allocation, je pense que tes valeurs pour **a sont aléatoires.
Si je me rappelle bien :
*a <=> a[0]
**a <=> a[0][0]
tu n'affecte pas a[1], a[2} et ainsi de suite.


louis
Messages postés
92
Date d'inscription
samedi 26 mars 2005
Statut
Membre
Dernière intervention
23 septembre 2015

Tu fais du C ou du C++ ? Parce que si tu fais du C++, abandonne les malloc/free et les char *, utilise plutot new/delete et std::string (qui te simplifieront la tâche au niveau des chaines de caractères)


Coin coin !