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 :

allocation strucure et pointeur


Sujet :

C

  1. #21
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2018
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    ok merci beaucoup à tous.

    Pour la question 4 je sais que le k-éme c'est l'adresse de la structure que l'on veux modifier avec la valeur de a et b.
    Donc j'ai penser à faire ca :

    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
    void modifier_structure_element_dans _structure(Element **sd, int n, int k, int a, int b){
     
         Element** sd;
         Element* new_sd;
     
         while(n>0){ 
                if (new_sd == k){  /* Si l'adresse de k est égale à l'adresse de la première structure pointer*/
                   new_sd ->c1 = a;
                   new_sd ->c2 = b;
     
                   --n;
                else 
                   sd++;  
                   --n;
         }
         return sd ;
    }

  2. #22
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par akhma Voir le message
    if (new_sd == k) /* Si l'adresse de k est égale à l'adresse de la première structure pointer*/
    Ton commentaire ne correspond pas à l'action. L'adresse de k c'est &k.
    Là, tu compares l'adresse de ta structure avec k, pas avec son adresse. Ce n'est pas en mettant un commentaire correspondant à ce que tu voudrais faire que cela se fera. C'est en écrivant l'instruction correspondante. Et si, en écrivant if (new_sd == &k) tu sens que ce n'est pas bon (parce que comparer un Element * avec un int * te parait bizarre) cela veut alors dire que ton idée est mauvaise.

    De plus, te manque des accolades dans le "else". Et si ton opération --n doit s'exécuter à la fois dans le "if" et à la fois dans le "else" alors tu la sors du bloc "if/else" (simple question de bon sens => écrire deux fois la même instruction aurait dû te faire tiquer). Et je ne comprends pas comment une fonction "void" peut retourner quelque chose (là aussi question de bon sens => faut réfléchir à ce qu'on écrit)

    Donc en fait tu es parti sur une mauvaise base. k c'est une position, pas une adresse. Te suffit donc de vérifier que k est plus petit que n et si c'est bon, modifier sd[k] et c'est réglé.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #23
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Te suffit donc de vérifier que k est plus petit que n et si c'est bon, tester si sd[k] n'est pas NULL, modifier et c'est réglé.

  4. #24
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2018
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Mais k possède déjà l'adresse de ce que l'on veux modifier.
    Pourquoi regarder l'adresse de k si elle est initialiser pour posséder l'adresse ?

  5. #25
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Citation Envoyé par akhma Voir le message
    Pourquoi regarder l'adresse de k si elle est initialiser pour posséder l'adresse ?
    Effectivement, cela va dépendre de comment tu crées ton tableau, et notamment comment tu gères le retour malloc à NULL.

    Mais avec le temps , tu verras lorsque ton programme codé en C (avec plus de 10000 lignes de codes) va planter de partout, ou alors tu vas récupérer des valeurs Undefined Behaviour tu vas commencer à faire de la programmation défensive.
    Et lorsque cela te gonflera de faire des algos comme celui de Pyramidev pour récupérer la mémoire, tu passeras au C++

    Mais le C++, c'est différent : c'est de l'objet avec de la RAII. Et même avec un système d'exceptions tu auras toujours des décisions à prendre.
    Et tu testeras aussi des langages comme Java (avec un machine virtuelle qui accepte que tu fasses des new à tire larigot) ou des langages interprétés où en plus de ne pas te soucier de la mémoire, tu ne te soucies pas des types.

  6. #26
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par foetus Voir le message
    Merci de m'avoir corrigé Mais tu sais, je ne me plonge pas non plus à 100% dans le détail de son truc quoi

    Citation Envoyé par akhma Voir le message
    Mais k possède déjà l'adresse de ce que l'on veux modifier.
    Non. k c'est (enfin pour moi) la position de l'élément à modifier. Exemple, k=3 signifie qu'on veut modifier le 3° élément de sd (ou le 4° si on considère que "0" sera le premier).

    Citation Envoyé par akhma Voir le message
    Pourquoi regarder l'adresse de k si elle est initialiser pour posséder l'adresse ?
    Ce n'est pas ce que j'ai dit. En fait, je n'ai jamais parlé d'adresse de "k" autrement que pour montrer les lacunes de ta solution. Et dans mon idée, on ne se préoccupe absolument pas de l'adresse de k.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Allocation tableau de pointeur
    Par kaikait dans le forum Débuter
    Réponses: 4
    Dernier message: 24/04/2010, 21h59
  2. allocation dynamique et pointeur
    Par siempre dans le forum C
    Réponses: 3
    Dernier message: 29/11/2009, 21h35
  3. Réponses: 6
    Dernier message: 24/03/2006, 18h24
  4. [Pointeur] Allocation mémoire
    Par Rayek dans le forum Langage
    Réponses: 22
    Dernier message: 20/05/2005, 10h26
  5. [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

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