Existe-t-il un moyen plus simple, dans C
, de définir un tableau sur une valeur plutôt que d'utiliser une boucle for
et de définir chaque valeur un par un?Définition d'un tableau à une valeur
Répondre
Si vous configurez le tableau à tous les 0, ou si le tableau est un tableau d'octets, vous pouvez utiliser memset
// Set myArray to all 0's
memset(myArray, 0, numberOfElementsInMyArray * sizeof(myArray[0]));
Si vous avez besoin de le mettre à autre chose que 0 dans des unités plus grandes qu'un octet (par exemple, définir un tableau de int
s à 1), alors il n'y a pas de fonction standard pour cela - vous devrez écrire votre propre boucle for pour cela.
Pourquoi ne pas remplacer numberOfElementsInMyArray par 'sizeof (myArray)/sizeof (myArray [0])' ;-) –
Peut-être que je suis juste stupide, mais '1' correspond à un octet. –
@Ben Jackson: Parce que cela ne fonctionne pas si 'myArray' est un pointeur vers un tableau dynamique. –
Dépend de la valeur. Si c'est zéro, utilisez memset(a, 0, sizeof(a))
. Sinon, si c'est un tableau char, vous pouvez utiliser memset avec une autre valeur. Mais memset fonctionne toujours au niveau char, donc si votre tableau n'est pas un char, seul zéro est susceptible d'être significatif.
Si c'est un tableau de valeurs d'octets, ou que vous voulez définir chaque octet à une valeur spécifique, vous pouvez utiliser memset
:
char xyzzy[100];
int plugh[40];
memset (xyzzy, 7, sizeof (xyzzy)); // all chars set to 7.
memset (plugh, 0x42, sizeof (plugh)); // all integers set to (e.g.) 0x42424242.
Une autre possibilité est de créer un modèle de la taille correcte au moment de l'initialisation (soit initialisation réelle comme ci-dessous, ou dans une fonction init
), puis appelez memcpy
à blat (a) sur le tableau réel à une date ultérieure.
static int template[] = { 1, 1, 1, 1, 1 };
int zorkmid[3];
memcpy (zorkmid, template, sizeof (zorkmid)); // ensure template is at
// least as big as zorkmid.
Cette dernière méthode est également pratique pour le remplissage des structures avec une valeur précalculée fixe: initialiser une copie factice avec les champs obligatoires fixés alors memcpy
au lieu de fixer manuellement tous les champs chaque fois que vous voulez une nouvelle instance .
(a)dehors: étymologique de blat
:
Le Jargon file (voir le glossaire pour toutes les définitions) répertorie les blat
que soit les quatre variables metasyntactic {foo, bar, thud, blat}
, ou un synonyme de blast
, sens 1.
À son tour, blast
(sens 1) est défini comme un synonyme de BLT
(c'est et non le sandwich), qui "se référait à toute opération de copie ou de déplacement sur un grand champ de bits".
blat? Pouvez-vous fournir une citation pour ce terme? –
Officiellement, non. C'est dans le code source de BSD pour memcpy IIRC, généralement utilisé pour un transfert de données plus grand que la normale. Cela, et grok, sont mes deux mots préférés :-) – paxdiablo
grok est un mot le plus excellent en effet. J'ai trouvé une définition de blast dans le fichier de jargon, qui est lui-même répertorié comme rare, qui liste blat comme une variation. http://catb.org/jargon/oldversions/jarg231.txt –
Vous pouvez le mettre à la même valeur, mais seulement pour 0
How to initialize all members of an array to the same value?
initialiser tous les éléments à 0
:
int myArray[10] = { 0 }; // all elements 0
Il y a une réponse dans cette page pour gcc ainsi .
- 1. Ajouter une définition à qmake avec une valeur?
- 2. Ajouter une valeur à un tableau multidimensionnel
- 3. jquery définition de la largeur à une valeur variable
- 4. Définition d'un CGPDFObjectRef à la valeur
- 5. Définition d'une clé et d'une valeur de tableau dans une instruction foreach
- 6. liste (vector) définition avec tableau
- 7. XSD Définition pour énumératif Valeur
- 8. Affectation d'une valeur d'un tableau à une chaîne
- 9. Comment utiliser une valeur de tableau de php à javascript?
- 10. Ajouter une valeur à la fin d'un tableau multidimensionnel
- 11. Ajouter une nouvelle valeur à un tableau existant en JavaScript
- 12. comment affecter une valeur à un tableau de chaînes?
- 13. js ajouter une valeur à un élément dans un tableau
- 14. changement élément de tableau vide à une valeur
- 15. Comment définir une valeur de tableau à l'aide de sp_OASetProperty
- 16. PHP - Tirer une valeur unique à partir d'un tableau multidimensionnel
- 17. L'élément de tableau Checkeach a une valeur
- 18. obtenir une valeur du tableau en php
- 19. Définir tableau de valeur avec une requête
- 20. Comment comparer une valeur dans un tableau?
- 21. Java et définition d'une variable égale à un tableau
- 22. Comment ajouter une valeur de tableau au milieu d'un tableau?
- 23. tableau (non trié) tableau à la valeur en python
- 24. affectation d'une valeur à un tableau bidimensionnel
- 25. Définition d'une fonction de rappel pour une valeur donnée
- 26. Valeur égale à la valeur ANY dans un tableau?
- 27. Le tableau contient une valeur spécifique
- 28. Sélection de données, définition d'une valeur calculée dans une colonne
- 29. D2: définition des dimensions du tableau à l'exécution
- 30. Définition d'un tableau de tableaux comme
['memset'] (http://opengroup.org/onlinepubs/007908799/xsh/memset.html)? –
Parfois, 'wmemset' peut aussi être utile.:-) –