Pointeur de pointeur
Résolu
kenson72000
Messages postés
5
Statut
Membre
-
kenson72000 Messages postés 5 Statut Membre -
kenson72000 Messages postés 5 Statut Membre -
Bonjour, s'il vous plaît j'aimerai savoir quel est le problème. Le code ci-dessous n'indique aucune erreur mais ça plante lors de l'exécution du programme.
main()
{
int i,j,n;
int **a;
printf("\tEntrer la dimension de votre matrice: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
a[i]=malloc(n*sizeof(int));
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("\tEntrer les elements de la ligne %d et de la colonne %d: ",i,j);
scanf("%d",&a[i][j]);
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("\tVoici l' element de la ligne %d et de la colonne %d %d: ",i,j, a[i][j]);
}
}
}
main()
{
int i,j,n;
int **a;
printf("\tEntrer la dimension de votre matrice: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
a[i]=malloc(n*sizeof(int));
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("\tEntrer les elements de la ligne %d et de la colonne %d: ",i,j);
scanf("%d",&a[i][j]);
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("\tVoici l' element de la ligne %d et de la colonne %d %d: ",i,j, a[i][j]);
}
}
}
3 réponses
-
Avant de faire a[i]=malloc(n*sizeof(int)); il faudrait que a[i] existe, et donc que tu fasses d'abord un malloc sur le a :
a = malloc(n*sizeof(int*));
-
a la place de" int **a " tu peut seulement utiliser un pointeur "int *a" puis pour allouer dynamiquement tu vas juste taper: a=(int*)malloc(n*n*sizeof(int))
-
donc il faut faire:
int **a;
a=(int **) malloc(n*sizeof((int*));
for (i=0; i<n; i++)
a[i]=(int *) malloc(n*sizeof(int));