web-dev-qa-db-fra.com

Comment définir tous les éléments d'un tableau à zéro ou une même valeur?

Je suis débutant dansCet j’ai vraiment besoin d’une méthode efficace pour définir tous les éléments d’un tableau comme étant égaux à zéro ou à la même valeur. Mon tableau est trop long, je ne veux donc pas le faire avec une boucle for.

7
user3610709

Si votre tableau a une allocation de stockage statique, il est initialisé par défaut à zéro. Toutefois, si le tableau dispose d'une allocation de stockage automatique, vous pouvez simplement initialiser tous ses éléments à zéro à l'aide d'une liste d'initialisation de tableau contenant un zéro.

// function scope
// this initializes all elements to 0
int arr[4] = {0};
// equivalent to
int arr[4] = {0, 0, 0, 0};

// file scope
int arr[4];
// equivalent to
int arr[4] = {0};

Veuillez noter qu'il n'existe pas de méthode standard pour initialiser les éléments d'un tableau avec une valeur autre que zéro à l'aide d'une liste d'initialisateurs contenant un seul élément (la valeur). Vous devez explicitement initialiser tous les éléments du tableau à l'aide de la liste d'initialisation.

// initialize all elements to 4
int arr[4] = {4, 4, 4, 4};
// equivalent to
int arr[] = {4, 4, 4, 4};
12
ajay

Vous pouvez utiliser memset, si vous êtes sûr de la longueur.

memset (ptr, 0x00, longueur)

5
Sawan
int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 }; // All elements of myArray are 5
int myArray[10] = { 0 };    // Will initialize all elements to 0
int myArray[10] = { 5 };    // Will initialize myArray[0] to 5 and other elements to 0
static int myArray[10]; // Will initialize all elements to 0
/************************************************************************************/
int myArray[10];// This will declare and define (allocate memory) but won’t initialize
int i;  // Loop variable
for (i = 0; i < 10; ++i) // Using for loop we are initializing
{
    myArray[i] = 5;
}
/************************************************************************************/
int myArray[10] = {[0 ... 9] = 5}; // This works only in GCC
4
user1814023

Si votre tableau est statique ou global, il est initialisé à zéro avant le démarrage de main (). Ce serait l'option la plus efficace.

1