IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Pointeurs en c.


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 126
    Par défaut Pointeurs en c.
    Bonjour à tous

    Voici mon problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
             l1 = ajouterListe (l1, el, pos, &err);
     
    	 if (*err == PAM)
    	{
    		 printf("/nDésolé la liste est pleine./n");
    	 }
    Ce que j'ai compris des pointeurs c'est que lorsque j'écris &err signifie l'adresse de la variable et *err signifie la valeur de la variable.

    Donc je veux comparé err à PAM (Une constante int)
    Mais cette ligne me fait une erreur de compilation : (error: invalid type argument of `unary *')


    ?????

    Mary

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Ce que j'ai compris des pointeurs c'est que lorsque j'écris &err signifie l'adresse de la variable et *err signifie la valeur de la variable.

    Ca ne va pas trop marcher ça.

    Si err est déclaré comme ça : int *err;

    &err va effectivement valloir l'adresse réelle du pointeur mais pas l'adresse pointée par le pointeur (qui est err).

    Essaye avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        l1 = ajouterListe (l1, el, pos, err);
    Si err est déclaré en tant qu'entier, alors il faut mettre :


  3. #3
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Salut,

    Si err est un int, il faut mettre Edit: Voilà, tu as les deux solutions possibles

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 126
    Par défaut
    Lorsque j'enleve le & devant err mon programme plante dans la méthode ajouterListe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Liste ajouterListe (Liste l, TypeEl x, int pos, int *err)
    {
    	int i;
    	//Si la liste est pleine
    	if ( l.nbElem > MAX_LISTE )
    	{
    		*err = PAM;
     
    	} //Si la position donnée est érronée
    	else if (pos < 1 || pos > MAX_LISTE)
    	{
    		*err = PERR;
    	}
    	else //Sinon on ajoute le typeEl x dans la liste l
    	{
    		if (pos != l.nbElem + 1)
    		{
    			for (i = l.nbElem - 1; i >= pos - 1 ; i--)
    			{
    				l.liste[i] = l.liste[i + 1];
    			}
     
    		}
    		l.liste[pos - 1] = x;
    		l.nbElem = l.nbElem + 1;
    		*err = OK;
    	}
     
    	return l;
    }
    En fait je crois que le programme bugg à *err = OK;

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9
    Par défaut
    Bonjour,

    Dans la définition de ta fonction, int *err est un pointeur sur un entier. Il te faut donc passer un pointeur à ta fonction, soit en déclarant dans le programme principal int *err et en passant err à la fonction, soit en déclarant int err dans le prog. principal et en passant &err.

    Dans le premier cas, tu récupéreras la valeur d'erreur dans *err, dans l'autre cas, ce sera err...

    J'éspère m'être bien exprimé.

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 126
    Par défaut
    Merci a tous

  7. #7
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut
    À voir ce code je dirais que tu es dans le même cours que moi avec Alikacem kissmytoe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. pointeurs
    Par ghost74 dans le forum C
    Réponses: 3
    Dernier message: 14/12/2002, 02h52
  2. Pointeur vers un tableau
    Par Nikos dans le forum C
    Réponses: 3
    Dernier message: 09/12/2002, 00h43
  3. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14
  4. djgpp et pointeurs far -2
    Par elvivo dans le forum Autres éditeurs
    Réponses: 16
    Dernier message: 29/07/2002, 22h43
  5. djgpp et pointeurs far
    Par elvivo dans le forum C
    Réponses: 2
    Dernier message: 13/07/2002, 00h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo