Annonce

Réduire
Aucune annonce.

Les allocations dynamiques en C

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • #16
    Superbe explication misterPoc
    Ouf, c'est très bien si tu as compris, car en ce qui me concerne, j'avais du mal à comprendre les propos de misterPoc... L'essentiel est que tu es compris, et surtout bien compris pour l'adapter par la suite dans tes codes.

    Vu que les tailles des appartements son fixe.
    À partir de là je suis plus... Attention aussi au verbe bidouiller, en C, ça ne pardonne pas !

    Commentaire


    • #17
      @Fred',

      Envoyé par fred Voir le message
      À partir de là je suis plus... Attention aussi au verbe bidouiller, en C, ça ne pardonne pas !
      Considères un appartement comme un bloc de valeurs, quand il dit "tailles des appartements sont fixes"

      il entend par là que, un int vaudra toujours 4 bytes, un double 8 bytes etc..

      Quoique, il paraît que sa dépand de nos machines !
      deux et deux font cinq

      Commentaire


      • #18
        C'est exacte merci d'éclaircir mes explications. Je prendrais le temps un peu plus tard pour faire un schémas ça sera plus compréhensible je pense. Pour la formule bidouiller tu as raison ce n'etait pas approprier. Je voulais dire que tu peux monter et descendre d'une adresse par pallier de 4 ou 8 bytes en fonction de la machine sur lequel ton programme tourne.
        ToxID : 7322307290A75F5F36142EF206D95374966F10FE2CCD8224BEC07F16137875058C3BC4020609


        Petite énigme, seriez vous décoder ce code ? WW4gZXJjYmFmciBoYXZpcmVmcnl5ciA/

        Commentaire


        • #19
          Envoyé par shirocen Voir le message
          Je pensais que ageAmis[i] était une variable, mais non en faite c'est juste une valeur ^_^ la notation "ageAmis[i]"

          désigne la valeur situé à l'adresse "ageAmis + i"

          Je suis bon ? :v
          C'est faux dans la maojorité des cas. Si ca fonctionne c'est que ton compilateur a modifié le code pour toi.
          C'est uniquement vrai dans le cas d'un pointeur sur char (char*).

          Lorsqu'on parcourt un tableau, on ne se deplace pas de la meme maniere selon le type du tableau:
          Tableau de char:
          0x0000 : addresse de tab[0]
          0x0001 : addresse de tab[1]
          0x0002 : addresse de tab[2]

          Tableau d'int:
          0x0000 : addresse de tab[0]
          0x0004 : addresse de tab[1]
          0x0008 : addresse de tab[2]

          En effet, tu dois savoir qu'un char et un int ne prenne pas le meme espace en mémoire.
          Donc lorsque tu fais "ageAmis + i", i etant incrémenté de 1 a chaque tour de boucle, tu n'accederas pas a la variable x du tableau lorsque tu manipules autre chose qu'un tableau ou pointeur (c'est quasiment la meme chose mais il existe une petite subtilité) de char.
          Je ne sais pas quel compilateur tu utilises, mais la plupart des compilos modernes corrigent automatiquement cela. C'est un point positif comme negatif.

          De plus, pour apporté une petite explication supplémentaire, lorsque tu accedes a une variable de cette maniere: *var, tu "dereferences" (mot important) la variable var pour acceder au contenu de l'adresse de sa valeur.
          Lorsque tu utilises tab[0], c'est exactement la meme chose.
          Cette notation permet de se passer de l'explication que je t'ai montré plus haut.
          Par exemple, sur un tableau d'int:

          tab[0] = *(tab)
          tab[1] = *(tab + 4)
          tab[2] = *(tab + (2 * 4))

          Voila, j'espere avoir été clair =)

          Commentaire


          • #20
            @keko,

            Merci pour ton intervention... En fait message 11, concernant ton dernier paragraphe, je lui donne le même exemple. Cependant je crois que Shirocen a été trop vite dans son apprentissage C, il faudra qu'il prenne le temps d'enregistrer quelques notions, et surtout de bien les comprendre avant d'aller plus loin.

            Commentaire

            Chargement...
            X