Il suffit de passer à memset (arr, -1, sizeof(arr));
Notez que pour d'autres valeurs que 0 et -1, cela ne fonctionnera pas. depuis memset définit les valeurs des octets pour le bloc de mémoire qui commence à la variable indiquée par *ptr
pour les éléments suivants num
octets.
void * memset ( void * ptr, int value, size_t num );
Et comme int
est représentée sur plus d'un octet, vous n'obtiendrez pas la valeur souhaitée pour les entiers de votre tableau.
Exceptions :
-
0 est une exception puisque, si vous mettez tous les octets à 0, la valeur sera zéro.
-
-1 est une autre exception puisque, comme Patrick l'a souligné, -1 est 0xff (=255) en int8_t et 0xffffffff en int32_t.
La raison que tu as :
arr[0] = -1
arr[1] = 255
arr[2] = 0
arr[3] = 0
arr[4] = 0
C'est parce que, dans votre cas, la longueur d'un int est de 4 octets (représentation 32 bits), la longueur de votre tableau en octets étant de 20 (=5*4), et vous n'avez mis que 5 octets à -1 (=255) au lieu de 20.