web-dev-qa-db-fra.com

Zéro un tableau en code C

Doublons possibles:
Comment initialiser un tableau à quelque chose en C sans boucle?
Comment initialiser un tableau en C

Comment puis-je mettre à zéro une taille connue d'un tableau sans utiliser de boucle for ou toute autre boucle?

Par exemple:

arr[20] = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

C'est le long chemin ... J'en ai besoin le court chemin.

34
Batman
int arr[20] = {0};

C99 [$6.7.8/21]

S'il y a moins d'initialiseurs dans une liste entre accolades qu'il n'y a d'éléments ou de membres d'un agrégat, ou moins de caractères dans un littéral de chaîne utilisé pour initialiser un tableau de taille connue qu'il n'y a d'éléments dans le tableau, le reste de l'agrégat doit être initialisé implicitement comme les objets qui ont une durée de stockage statique.


73
Prasoon Saurav
int arr[20];
memset(arr, 0, sizeof arr);

Voir référence pour memset

55
Oleh Prypin

Remarque: vous pouvez utiliser le memset avec n'importe quel caractère.

Exemple:

int arr[20];
memset(arr, 'A', sizeof(arr));

Peut également être partiellement rempli

int arr[20];
memset(&arr[5], 0, 10);

Mais attention. Ce n'est pas limité pour la taille du tableau, vous pourriez facilement endommager gravement votre programme en faisant quelque chose comme ceci:

int arr[20];
memset(arr, 0, 200);

Cela va fonctionner (sous Windows) et zéro mémoire après votre tableau. Cela pourrait endommager d'autres valeurs de variables.

10
Rúben Lício Reis

homme bzero

NAME
   bzero - write zero-valued bytes

SYNOPSIS
   #include <strings.h>

   void bzero(void *s, size_t n);

DESCRIPTION
   The  bzero()  function sets the first n bytes of the byte area starting
   at s to zero (bytes containing '\0').
3
drysdam

Utilisation de memset:

int something[20];
memset(something, 0, 20 * sizeof(int));
1
iRaivis

int arr[20] = {0} serait plus facile si cela ne devait être fait qu'une seule fois.

1
Chris