Erreur comparaison pointeur à un entier
Fermé
dachitaib
Messages postés
4
Date d'inscription
lundi 19 novembre 2012
Statut
Membre
Dernière intervention
4 décembre 2012
-
4 déc. 2012 à 09:08
Utilisateur anonyme - 4 déc. 2012 à 14:50
Utilisateur anonyme - 4 déc. 2012 à 14:50
A voir également:
- Erreur comparaison pointeur à un entier
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 1001 outlook - Accueil - Bureautique
- Pointeur souris disparu windows 10 - Guide
- Erreur 5000 france tv - Forum iPhone
1 réponse
Utilisateur anonyme
4 déc. 2012 à 14:50
4 déc. 2012 à 14:50
Comme le dit si bien ton message d'erreur, à la ligne 56 de ton fichier list.c, tu compares un pointeur à un entier. Tu sais que c'est interdit ? Car ça ne veut rien dire.
Tu peux comparer deux pointeurs (ton pointeur et l'adresse d'un entier) ou deux entiers (ce qui est pointé par le pointeur et ton entier) mais pas deux variables différentes.
Dans ton cas précis :
ou
seraient syntaxiquement corrects, mais la comparaison de deux pointeurs ne voudrait rien dire, car x est une variable locale et son adresse n'a rien à voir avec ta liste.
En fait, il y a pour moi un problème de logique dans ta démarche :
- Soit ta liste est dédiée à des entiers, et son champ val devrait être un int et non pas un int*, et tes fonction d'insertion devraient donc avoir des int et non pas des int * comme paramètres
- Soit ta liste est plus générale, et il faut alors qu'elle mémorise le type de variable stockée à chaque noeud, pour que ta fonction de suppression sache si elle doit comparer deux char, deux entiers, deux structures... pour trouver le noeud à détruire
Tu peux comparer deux pointeurs (ton pointeur et l'adresse d'un entier) ou deux entiers (ce qui est pointé par le pointeur et ton entier) mais pas deux variables différentes.
Dans ton cas précis :
(*l)->val == x est incorrect
(*l)->val == &x // comparaison de deux pointeurs
ou
*(int*)((*l)->val) == x // comparaison de deux entiers
seraient syntaxiquement corrects, mais la comparaison de deux pointeurs ne voudrait rien dire, car x est une variable locale et son adresse n'a rien à voir avec ta liste.
En fait, il y a pour moi un problème de logique dans ta démarche :
- Soit ta liste est dédiée à des entiers, et son champ val devrait être un int et non pas un int*, et tes fonction d'insertion devraient donc avoir des int et non pas des int * comme paramètres
- Soit ta liste est plus générale, et il faut alors qu'elle mémorise le type de variable stockée à chaque noeud, pour que ta fonction de suppression sache si elle doit comparer deux char, deux entiers, deux structures... pour trouver le noeud à détruire