Initialisation d'une matrice en c
Fermé
sofia
-
19 oct. 2010 à 15:25
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 19 oct. 2010 à 21:29
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 19 oct. 2010 à 21:29
A voir également:
- Initialiser une matrice en c
- Impossible d'initialiser le protocole sftp. sftp fonctionne-t-il sur le serveur ? - Forum Linux / Unix
- Vous ne pouvez pas modifier une partie de matrice ✓ - Forum Excel
- Impossible initialiser disque dur redondance cyclique - Forum Disque dur / SSD
- Pas modifier une partie de matrice - Forum Excel
- Figer une table matrice - Forum Excel
3 réponses
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
19 oct. 2010 à 16:59
19 oct. 2010 à 16:59
juste un truc.. dans le priintf tu fais:
,connexion[t1][t2])
pourquoi dans l'init tu changes de syntaxe:
*(connexion+y*nbrouter+z)=0;
??
moi j'aurai bien calé un connexion[y][z] = 0 ....
,connexion[t1][t2])
pourquoi dans l'init tu changes de syntaxe:
*(connexion+y*nbrouter+z)=0;
??
moi j'aurai bien calé un connexion[y][z] = 0 ....
loupius
Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
148
19 oct. 2010 à 19:42
19 oct. 2010 à 19:42
Aaaah! Que de confusions!
Tu déclares un tableau de pointeurs dont chaque pointeur pointe vers un tableau... puis, dans l'initialisation, tu fais comme si ton tableau était un tableau à deux dimensions.
RESULTAT: tu as des problèmes et c'est normal. En effet, rien ne dit que tes allocations mémoires successives seront collées les unes aux autres... d'ailleurs ce ne sera que rarement le cas puisqu'elles sont, en fait, alignées sur des paragraphes.
Alors il te faut choisir entre le tableau de pointeurs où le tableau multimensions.
NB: Qui écrit 'malloc' doit écrire 'free', même si cela parait parfois inutile, c'est une bonne habitude à prendre.
Bonne continuation.
Tu déclares un tableau de pointeurs dont chaque pointeur pointe vers un tableau... puis, dans l'initialisation, tu fais comme si ton tableau était un tableau à deux dimensions.
RESULTAT: tu as des problèmes et c'est normal. En effet, rien ne dit que tes allocations mémoires successives seront collées les unes aux autres... d'ailleurs ce ne sera que rarement le cas puisqu'elles sont, en fait, alignées sur des paragraphes.
Alors il te faut choisir entre le tableau de pointeurs où le tableau multimensions.
NB: Qui écrit 'malloc' doit écrire 'free', même si cela parait parfois inutile, c'est une bonne habitude à prendre.
Bonne continuation.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
19 oct. 2010 à 21:29
19 oct. 2010 à 21:29
Bonjour,
connexion+y*nbrouter+z=0
Oui, à condition de supposer que les données sont contigües en mémoire. Aucune garantie avec ta déclaration de tableau comme te l'a dit Loupius.
Par contre, si tu utilises connexion[y][z]=0; cela fonctionnera en plus de rendre la notation plus claire.
Ou mieux encore, tu peux utiliser tout simplement la fonction calloc. Elle te permettra d'allouer ton tableau en initialisant à 0 ;-))).
connexion+y*nbrouter+z=0
Oui, à condition de supposer que les données sont contigües en mémoire. Aucune garantie avec ta déclaration de tableau comme te l'a dit Loupius.
Par contre, si tu utilises connexion[y][z]=0; cela fonctionnera en plus de rendre la notation plus claire.
Ou mieux encore, tu peux utiliser tout simplement la fonction calloc. Elle te permettra d'allouer ton tableau en initialisant à 0 ;-))).