Wenn Sie Willst du das Array zum Zeitpunkt der Deklaration mit 0 initialisieren, kannst du verwenden: int a[10] = {0};
was sehr schnell ist. Wenn Sie jedoch mit einem anderen Wert initialisieren oder das Array zu einem späteren Zeitpunkt im Code mit 0 initialisieren möchten, verwenden Sie: memset(a, -1, size_a);
(oder memset(a, 0, size_a);
) oder eine Schleife. Meiner Meinung nach immer memset()
zu loopen, weil memset()
oft optimiert wird, um ganze Wörter im Speicher auf den Initialisierungswert als sein Argument gegeben, anstatt einzelne Bytes zu setzen.
Für Statistiken, auf meinem 32-Bit-Linux-Installation mit 4 GB Speicher und 2,2 GHz * 2-Prozessor, die Laufzeiten von vier Arten von Initialisierungscodes Array sind unten angegeben:
1). 0.002s
#include <string.h>
#define SIZE 1000000
int a[SIZE];
int main(void)
{
return 0;
}
2). 0.008s
#include <string.h>
#define SIZE 1000000
int main(void)
{
int a[SIZE] = {0};
return 0;
}
3). 0.003s
#include <string.h>
#define SIZE 1000000
int main(void)
{
int a[SIZE];
memset(a, -1, SIZE);
return 0;
}
4). 0.011s
#include <string.h>
#define SIZE 1000000
int main(void)
{
int a[SIZE];
int i;
for(i = 0; i < SIZE; i++)
a[i] = -1;
return 0;
}
Auf Zweierkomplementmaschinen. Wird nicht an exotischen Sachen wie Zeichen und Größenordnungen arbeiten. Aber da die ganze Welt heutzutage Zweierkomplement ist, ja. –