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 :

Opérations sur char*


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 17
    Par défaut Opérations sur char*
    Bonjour.

    J'aimerais, dans le cadre de la réalisation d'un tri quicksort, faire une opération sur des types char* pour modifier le pivot.
    Voici les déclarations des variables et le code concerné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char *montant = base;
    char *descendant = montant + (nmemb * size);
    char *pivot = montant;
    ... Plus loin dans le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pivot = montant + descendant - pivot;
    Cette dernière ligne de code génère une erreur à la compilation. La voici :
    invalid operands to binary + (have ‘char *’ and ‘char *’).

    Apparemment, l'addition est impossible avec de char*.

    Quelqu'un pourrait-il m'aider à ce sujet?

    Merci d'avance.

    WD.

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Apparemment, l'addition est impossible avec de char*.
    Oui, il est impossible d'ajouter deux adresses (pointeurs).
    ce que tu peux faire c'est :
    - Soustraire deux adresses et obtenir un entier
    - Ajouter (ou soustraire) un entier d'une adresse pour obtenir une adresse.

    L'expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pivot = montant + descendant - pivot;
    est évaluée comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pivot = ((montant + descendant) - pivot);
    d'où l'erreur.

    Possibilités :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    pivot = montant + (descendant - pivot);
    // ou 
    pivot = montant  - pivot + descendant;

  3. #3
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 17
    Par défaut
    Merci pour cette réponse, ça fonctionne désormais.

Discussions similaires

  1. Opérations sur les matrices...
    Par aokiseiichiro dans le forum C
    Réponses: 32
    Dernier message: 28/07/2005, 17h10
  2. Opération sur de grands entiers
    Par tutu dans le forum C
    Réponses: 16
    Dernier message: 24/05/2005, 08h56
  3. opération sur fermeture de fenêtre
    Par java_math dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 20/06/2004, 22h52
  4. opérations sur les bits d'un byte
    Par petitours dans le forum C++Builder
    Réponses: 4
    Dernier message: 10/02/2004, 20h42
  5. opérations sur les dates
    Par coucoucmoi dans le forum Débuter
    Réponses: 2
    Dernier message: 12/08/2003, 11h45

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