Pb en C a la mort moi le noeud

Fermé
Coutelle Guillaume - 5 mai 2004 à 17:37
 marvinrouge - 27 mai 2004 à 14:35
Bjr,
Si quelqu'un peut me dire pourkoi ça ne marche pas et comment faire marcher merci de me renseigner.
#include <stdio.h>
#define MAX 26

typedef int graphe [MAX][MAX];

int main (void)
{
int i, j;
graphe *g;
for(i=0 ; i<MAX ; i++)
{ for(j=0;j<MAX;j++)
{*g[i][j]=0;
printf("%d %d %d", i,j,*g[i][j]);
}}
return 0;
}

ça fonctionne jusqu'a i=8 et j=5 mais jamais au dela ???? !

Merci

2 réponses

tafiscobar Messages postés 1277 Date d'inscription jeudi 7 décembre 2000 Statut Contributeur Dernière intervention 26 février 2009 177
5 mai 2004 à 20:06
 graphe *g; 

/* qd on declare un pointeur, on l'initialise d'abord avant de l'utiliser. Pourqoi ca marche pour i =8 et j =5 ??? eh ben, c'est les droleries du C, tu peux acceder a de la memoire non alloué jusqu'a ce q tu essaies de toucher a de la memoire qui ne t'appartient pas ou que tu ecrases quelque chose qui fasse planter ton code. Ne l'oublie jamais, un pointeur s'alloue avant de s'utiliser. */


tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
0
Coutelle Guillaume
6 mai 2004 à 12:28
bjr et merci ....
j'en revient pas d'être assez bête pour pas y avoir pensé tout seul, c'est grave !!
Merci bcp bcp bcp
Guillaume
0
marvinrouge
27 mai 2004 à 14:35
Salut Guillaume, outre l'oubli d'initialisation qui t'as été signalé moi ce qui me gên c'est que g soit un pointeur (idée de dynamisme, d'allocation selon les besoins) alors que MAX est une constante

donc soit tu fais tout en STATIQUE (g pas pointeur !)

int main (void)
{
int i, j;
graphe g;
for(i=0 ; i<MAX ; i++)
{ for(j=0;j<MAX;j++)
{g[i][j]=0;
printf("%d %d %d", i,j,g[i][j]);
}}
return 0;
}

soit tu fais tout en DYNAMIQUE
0