Ajouter un élément au début de tableau

Hussain -  
[Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
mes amis j'ai un questions "comment ajouter un élément au début de tableau EN LANGAGE C "?et merci Dabbour

Configuration: Windows / Edge 91.0.864.41

4 réponses

  1. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    Bonjour,

    Il faut 'pousser' tous les éléments présents dans leur case suivante, et ensuite il n'y a plus qu'à remplir le premier élément.
    1
  2. Hussain
     
    Merci est-que tu as un exemple pour ce problem?
    0
  3. evil
     
    Salut
    Pour ajouter un élément au début à ton tableau de taille de n!
    tu crées un tableau de taille n +1, et tu déclare l'adresse de ton nouveau tableau en index 1 est égale à celui de ton tableau initiale
    -1
    1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
       
      Je ne crois pas que ce que tu dis soit possible.

      Un tableau est une zone de mémoire contiguë. Tu ne peux pas modifier l'adresse mémoire réservée à un tableau, ou à un élément d'un tableau (dont l'adresse mémoire est calculée avec l'opérateur
      []
      par rapport à l'adresse du tableau et la taille de chaque élément du tableau).

      Pour que ce que tu dis fonctionne, il faudrait que l'original et le nouveau tableau que tu proposes soient des tableaux de pointeurs, par exemple
      char * orig[10];
      et encore, il faudrait alors que toutes les adresses contenues dans le tableau original soient copiées à partir de l'index 1 du nouveau tableau, et pas seulement pour l'adresse de l'élément à l'index 1. Cela ne se ferait donc pas magiquement en ne copiant qu'une seule adresse.

      De plus, le PO n'a jamais dit :
      • que son tableau serait un tableau de pointeurs
      • qu'il devait obtenir son résultat sous la forme d'un nouveau tableau


      Si on veut faire un décalage des éléments avec un tableau suffisamment dimensionné (en place), ou deux tableaux, on peut le faire en une seule instruction avec memmove() qui peut être utilisé en faisant un
      #include <string.h>
      0
      1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108 > [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention  
         
        une précision, dans le cas d'un changement en place au sein d'un seul tableau, il faut utiliser memmove(), comme je l'ai indiqué, plutôt que memcpy(), car cette dernière n'est pas conçue pour fonctionner sur des zones mémoires qui se chevauchent et peut produire des résultats inattendus.
        0