Bonjour
Je m'amuse à coder une liste chaînée entièrement fonctionnelle (avec des fonctions pouvant créer, ajouter, supprimer des éléments n'importe où etc) pour m'améliorer en C.
J'ai réussit, mais j'ai une question :
Pour accéder à un élément dans une structure alloué dynamiquement on utilise l'expression
element=(*ma_structure).mon_element
, qui est équivalente à
element=ma_structure->mon_element
Personnellement je préfère de loin la 1ère orthographe, comme ça je ne perd pas de vue qui est un pointeur, qui est une variable, etc, et aussi parce que la flèche est de l'autre coté de l'* utilisée d'habitude pour les pointeurs et ça me perturbe. Mais essayant de manipuler les éléments de ma liste chaînée je me suis aperçu d'un soucis : cela ne marche que pour le 1er pointeur. Si je tente par exemple de faire
element_numero_2=(*ma_liste_chainee).(*first_element).(*next).mon_element
Le compilateur n'est pas très très gentil, et me répond invariablement :
1 2 3 4 5
| $ gcc -g3 main_liste_chainee.c bool.c -o main_liste_chainee.console
main_liste_chainee.c: In function main:
main_liste_chainee.c:14:24: error: expected identifier before ( token
14 | a=(*ma_liste_chainee).(*first).b;
| ^ |
J'ai essayé de mettre des parenthèses un peu partout mais rien à faire : seule deux orthographes fonctionnent :
1 2
| element_numero_2=(*ma_liste_chainee).first_element->next->mon_element
element_numero_2=ma_liste_chainee->first_element->next->mon_element |
Est ce que vous sauriez comment conserver l'orthographe
element_numero_2=(*ma_liste_chainee).(*first_element).(*next).mon_element
??
Cordialement ^^
Partager