web-dev-qa-db-de.com

Wie setze ich alle Elemente eines Arrays auf Null oder einen beliebigen Wert?

Ich bin Anfänger inCund brauche wirklich eine effiziente Methode, um alle Elemente eines Arrays auf Null oder einen beliebigen Wert zu setzen. Mein Array ist zu lang, deshalb möchte ich es nicht mit for-Schleife machen.

7
user3610709

Wenn Ihr Array über eine statische Speicherzuordnung verfügt, wird es standardmäßig auf Null gesetzt. Wenn das Array jedoch über eine automatische Speicherzuordnung verfügt, können Sie einfach alle seine Elemente mit einer Array-Initialisierungsliste, die eine Null enthält, auf Null initialisieren.

// 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};

Bitte beachten Sie, dass es keine Standardmethode gibt, die Elemente eines Arrays mit einer anderen Initialisierungsliste, die ein einzelnes Element (den Wert) enthält, auf einen anderen Wert als Null zu initialisieren. Sie müssen alle Elemente des Arrays mithilfe der Initialisierungsliste explizit initialisieren.

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

Sie können Memset verwenden, wenn Sie sich über die Länge sicher sind.

memset (Ptr, 0x00, Länge)

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

Wenn Ihr Array statisch oder global ist, wird es vor dem Start von main () auf Null gesetzt. Das wäre die effizienteste Option.

1