Les strucutures de tableau en C win
Résolu/Fermé
poparnassus
Messages postés
426
Date d'inscription
vendredi 28 mars 2014
Statut
Membre
Dernière intervention
25 décembre 2019
-
Modifié par poparnassus le 4/03/2017 à 21:36
SanzenSekai Messages postés 10 Date d'inscription samedi 4 mars 2017 Statut Membre Dernière intervention 6 mars 2017 - 6 mars 2017 à 17:07
SanzenSekai Messages postés 10 Date d'inscription samedi 4 mars 2017 Statut Membre Dernière intervention 6 mars 2017 - 6 mars 2017 à 17:07
A voir également:
- Les strucutures de tableau en C win
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Trier tableau excel - Guide
- Win setup from usb - Télécharger - Utilitaires
2 réponses
irevoire
Messages postés
63
Date d'inscription
jeudi 25 juillet 2013
Statut
Membre
Dernière intervention
5 mars 2017
15
4 mars 2017 à 21:14
4 mars 2017 à 21:14
int block_n[2]; fait un tableau de int,
struct SNACKE snake[100]; fera un tableau de taille 100 avec ta structure a chaque cellule.
Mais je ne comprend pas ce que tu veux dire quand tu parles de structure de tableau...
Tu pourrais être plus clair ?
struct SNACKE snake[100]; fera un tableau de taille 100 avec ta structure a chaque cellule.
Mais je ne comprend pas ce que tu veux dire quand tu parles de structure de tableau...
Tu pourrais être plus clair ?
irevoire
Messages postés
63
Date d'inscription
jeudi 25 juillet 2013
Statut
Membre
Dernière intervention
5 mars 2017
15
5 mars 2017 à 01:39
5 mars 2017 à 01:39
Si tu veux faire des tableaux a taille "variable" tu peux utiliser la fonction malloc.
Par exemple si tu as une fonction qui prend en paramètre un int "taille" et que tu veux créer un tableau de taille éléments tu fais quelque chose comme ;
void machin (int taille) {
SNACKE * snake ;
snake = malloc (taille * sizeof (SNACKE)) ;
}
Tu peux alors utiliser snake plus ou moins comme si tu avais fait
SNACKE snacke[taille];
Par contre une fois que tu a fais appel a malloc tu ne peux toujours pas modifier la taille de ton tableau, si tu veux quelque chose de vraiment variable il te faut faire une liste comme dit plus haut.
Et lorsque que tu a fini d'utiliser ton tableau tu dois faire appel a la fonction free.
Dans mon exemple tu dois écrire ;
free (snake) ;
Par exemple si tu as une fonction qui prend en paramètre un int "taille" et que tu veux créer un tableau de taille éléments tu fais quelque chose comme ;
void machin (int taille) {
SNACKE * snake ;
snake = malloc (taille * sizeof (SNACKE)) ;
}
Tu peux alors utiliser snake plus ou moins comme si tu avais fait
SNACKE snacke[taille];
Par contre une fois que tu a fais appel a malloc tu ne peux toujours pas modifier la taille de ton tableau, si tu veux quelque chose de vraiment variable il te faut faire une liste comme dit plus haut.
Et lorsque que tu a fini d'utiliser ton tableau tu dois faire appel a la fonction free.
Dans mon exemple tu dois écrire ;
free (snake) ;
poparnassus
Messages postés
426
Date d'inscription
vendredi 28 mars 2014
Statut
Membre
Dernière intervention
25 décembre 2019
30
5 mars 2017 à 01:47
5 mars 2017 à 01:47
Si jutilise ta methode, je peux toujour utiliser free si la taille change, et redefinir la nouvel taille ?
Par contre vous voulez dire quoi en parlant de liste ?
Par contre vous voulez dire quoi en parlant de liste ?
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
>
poparnassus
Messages postés
426
Date d'inscription
vendredi 28 mars 2014
Statut
Membre
Dernière intervention
25 décembre 2019
5 mars 2017 à 09:50
5 mars 2017 à 09:50
En effet, si la taille du tableau doit changer on peut en créer un nouveau, copier dedans et libérer l'ancien (la fonction realloc() fait déjà tout cela).
On peut aussi utiliser une liste qui est moins contraignante à la réallocation mémoire mais a aussi beaucoup d'autres inconvénients (complexe à écrire, consomme plus de mémoire, risque d'effet 'gruyère', pas d'accès direct il faut parcourir la liste pour trouver le i-ème élément)
On peut aussi utiliser une liste qui est moins contraignante à la réallocation mémoire mais a aussi beaucoup d'autres inconvénients (complexe à écrire, consomme plus de mémoire, risque d'effet 'gruyère', pas d'accès direct il faut parcourir la liste pour trouver le i-ème élément)
SanzenSekai
Messages postés
10
Date d'inscription
samedi 4 mars 2017
Statut
Membre
Dernière intervention
6 mars 2017
>
poparnassus
Messages postés
426
Date d'inscription
vendredi 28 mars 2014
Statut
Membre
Dernière intervention
25 décembre 2019
5 mars 2017 à 11:37
5 mars 2017 à 11:37
Les listes et les tableaux sont 2 moyens différents de stocker les données, avec leurs avantages et leurs inconvénients ^^
poparnassus
Messages postés
426
Date d'inscription
vendredi 28 mars 2014
Statut
Membre
Dernière intervention
25 décembre 2019
30
5 mars 2017 à 13:30
5 mars 2017 à 13:30
Ok Je vous remercie !
comment ca marche les listes ? Si vous avez un petit liens :-)
comment ca marche les listes ? Si vous avez un petit liens :-)
SanzenSekai
Messages postés
10
Date d'inscription
samedi 4 mars 2017
Statut
Membre
Dernière intervention
6 mars 2017
5 mars 2017 à 13:51
5 mars 2017 à 13:51
Tu peux te faire un module pour créer des listes simplement chaînée, elles te seront suffisantes pour ton projet!
J'ai trouvé ce lien qui les explique, rien de bien compliqué si tu maîtrises à peu près les pointeurs!
https://nicolasj.developpez.com/articles/listesimple/
J'ai trouvé ce lien qui les explique, rien de bien compliqué si tu maîtrises à peu près les pointeurs!
https://nicolasj.developpez.com/articles/listesimple/
Modifié par poparnassus le 4/03/2017 à 22:42
Du coup j'ai fait ceci
Du coup:
M'affiche la valeur de
Modifié par poparnassus le 4/03/2017 à 22:50
J'ai un warning sur toute mes fonction qui font appel a Ya un truc que je fais de travers ^^
4 mars 2017 à 22:52
Si tu déclares ta structure de position comme étant juste un simple tableau alors ça ne sert à rien, tu encapsules juste ton tableau dans une structure ce qui est inutile!
4 mars 2017 à 22:53
Avec n un entier qui te permet ainsi de faire un tableau de longueur n qui pourra contenir tes positions!
Par contre la valeur est fixe, il faudra faire attention à ne pas dépasser la longueur du tableau au niveau des indices que tu utiliseras! Tu peux sinon faire ton tableau en utilisant les pointeurs (voire même créer ton propre module de tableau) mais cela te demandera plus de temps!
4 mars 2017 à 22:56
Parce que comme j'ai fait ci dessus J'ai bien un tableau snacke[100] mais seulement 2 variable x et y alors qu'il me faut autant de variable x et y que de block_n