Ajouter un élément au début de tableau
Fermé
Hussain
-
6 juin 2021 à 15:54
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 10 juin 2021 à 13:10
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 10 juin 2021 à 13:10
A voir également:
- Ajouter un élément au début de tableau
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Ajouter un compte gmail - Guide
- Ajouter un profil netflix payant - Guide
- Tableau word - Guide
4 réponses
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
6 juin 2021 à 16:41
6 juin 2021 à 16:41
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.
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.
Whismeril
Messages postés
19025
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 avril 2024
929
6 juin 2021 à 18:08
6 juin 2021 à 18:08
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
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
[Dal]
Messages postés
6174
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
2 février 2024
1 083
10 juin 2021 à 10:13
10 juin 2021 à 10:13
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
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
De plus, le PO n'a jamais dit :
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
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>
[Dal]
Messages postés
6174
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
2 février 2024
1 083
>
[Dal]
Messages postés
6174
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
2 février 2024
10 juin 2021 à 13:10
10 juin 2021 à 13:10
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.