Initialiser les valeurs d'un tableau dans une struct
J'ai une structure qui dispose de plusieurs tableaux. Les tableaux de type unsigned char[4].
Je peux initialiser chaque élément en appelant
struct->array1[0] = (unsigned char) something;
...
struct->array1[3] = (unsigned char) something;
Demandais juste si il y a un moyen d'initialiser tous les 4 valeurs en une seule ligne.
SOLUTION: j'avais besoin de créer un tableau temporaire avec toutes les valeurs d'initialisation, puis d'appeler memset() pour copier les valeurs de la structure de la matrice.
De la même valeur?
Je dois dire que c'est si bien connu qu'une recherche sur google aurait révélé rapidement la réponse... stackoverflow.com/questions/201101/... 😉
Je dois dire que c'est si bien connu qu'une recherche sur google aurait révélé rapidement la réponse... stackoverflow.com/questions/201101/... 😉
OriginalL'auteur Nick Schudlo | 2012-03-24
Vous devez vous connecter pour publier un commentaire.
Si les valeurs sont les mêmes, vous pourriez faire quelque chose comme
Autrement, si les valeurs sont stockées dans un tableau, vous pouvez utiliser le memcpy fonction de la façon
OriginalL'auteur hehewaffles
Si tu veux vraiment dire "initialiser" dans le sens que vous pouvez le faire au moment de la déclaration de la variable, alors assurez-vous:
Gotcha - ensuite, vous pouvez soit utiliser
memset()
pour les mettre tous à la même valeur, ou de faire d'un modèle de tableau etmemcpy()
si vous voulez être différent. En outre, à peu près tout ce que vous pouvez faire est d'attribuer un par un.Merci, le memset est ce dont j'avais besoin.
Cette solution n'est pas très pratique avec la syntaxe correcte. Donc -1
OriginalL'auteur Carl Norum
Lorsque vous créez la structure, vous pouvez l'initialiser avec le regroupement d'initialisation:
OriginalL'auteur Seth Carnegie
Oui:
OriginalL'auteur Kerrek SB
Je vois que vous avez un pointeur (vous?).
Si vous allouer de la mémoire pour le pointeur avec
calloc()
tout à l'intérieur de la structure sera initialisé avec0
.Sinon, vous devez
memset()
à 0 ou à attribuer une valeur à l'élément par élément.OriginalL'auteur pmg
Vous pouvez faire une boucle:
Cela fonctionne même si vous n'avez pas de type char, mais par exemple de type int (et les valeurs != 0). En fait, memsetting à, disons, 1 une structure faite de int (quand sizeof int supérieure à 1) n'est pas la bonne façon de les initialiser.
OriginalL'auteur ShinTakezou