CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Liste chainée langage C, aide déclaration :D

couleurbleunuit
couleurbleunuit
Niveau 3
14 octobre 2016 à 16:48:53

Bonjour;

Bah voila, j'ai un petit problème au niveau du langage C sur la déclaration d'une liste chainée, on a

typedef struct Element
{
int valeur;
struct Element *suivant;
} Element, *List;

Enfait, je voulais savoir si le fait d'enlever ( *List) ici était équivalant à rajouter
typedef struct Element* List; ???

et je voulais savoir aussi pourquoi quand on écrit des fonctions par exemple pour remplire une liste chainée on l'écrivait de type pointeur sur Element ( c'est à dire List ) et non pas du type void?

merci beaucouppp :D

Message édité le 14 octobre 2016 à 16:49:13 par couleurbleunuit
godrik
godrik
Niveau 30
14 octobre 2016 à 17:32:09

Je n'avais jamais utilise cette notation. Le ", *List;" est en effet equivalent au typedef que tu donnes.

Pour la deuxieme questin, on utilise void que lorsque on ne connait pas le type exact de l'objet pointe. Ici, tu le connais donc tu l'indiques.

couleurbleunuit
couleurbleunuit
Niveau 3
14 octobre 2016 à 21:21:47

Ah, donc écrire void ou bien le type revient à la même chose ?

Je te remercie d'avoir répondu à mon sujet si vite :D

godrik
godrik
Niveau 30
14 octobre 2016 à 21:24:44

Ah, donc écrire void ou bien le type revient à la même chose ?

Bah, si tu le fait void, tu va avoir de caster le pointeur d'un type a l'autre a chauqe fois que tu veux le dereferencer. Ce qui est chiant a ecrire, et contourne les protections de type fournis par le compilateur. Mais en terme d'execution, ca serait pareil.

couleurbleunuit
couleurbleunuit
Niveau 3
17 octobre 2016 à 11:48:37

Caster ? c'est à dire ?

Je m'excuse de ne pas avoir répondu à temps, mais j'ai encore une autre question qui me turlepine, par exemple des les piles ( Stack )

Une fonction qui rajoute des élements ressemblerait à ceci

StackElement* push_stack(StackElement *st, int x)
{
StackElement *element;
element = (StackElement*) malloc(sizeof(StackElement));
if(element == NULL)
{
printf("erreur\n");
exit(EXIT_FAILURE);
}
element->valeur = x;
element->nxt = st;

}

En fait imaginons que j'ai une pile nommée " pil ", pour rajouter un element je fais

pil = push_stack(pil,5);

ce que j'ai pas compris c'est pourquoi que ça marche hahaha, comment la fonction push_stack sait qu'elle doit retourner " element " ???

merci encore

godrik
godrik
Niveau 30
17 octobre 2016 à 16:04:01

telle que la fonction est ecrite, elle ne retourne pas element.

couleurbleunuit
couleurbleunuit
Niveau 3
18 octobre 2016 à 20:12:14

Qu'est ce qu'elle retourne dans ce cas :o

Parce que quand je rajoute " return element; " ça marche quand même.

Message édité le 18 octobre 2016 à 20:15:58 par couleurbleunuit
Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment