Das ist der lange Weg … Ich brauche den kurzen Weg.
auch stackoverflow.com/questions/201101/…
– tobyodavies
12. April 2011 um 13:46 Uhr
Dein “Beispiel” macht nicht das, was du denkst.
– R.. GitHub HÖR AUF, EIS ZU HELFEN
12. April 2011 um 13:49 Uhr
Der von Ihnen gepostete Code ist kein gültiges C. Versuchen Sie, etwas zu posten, das kompiliert wird.
– Ludin
12. April 2011 um 14:27 Uhr
Prasun Saurav
int arr[20] = {0};
C99 [$6.7.8/21]
Wenn eine in geschweiften Klammern eingeschlossene Liste weniger Initialisierer enthält als Elemente oder Mitglieder eines Aggregats vorhanden sind oder weniger Zeichen in einem Zeichenfolgenliteral verwendet werden, um ein Array bekannter Größe zu initialisieren, als Elemente im Array vorhanden sind, der Rest des Aggregats wird implizit genauso initialisiert wie Objekte mit statischer Speicherdauer.
Funktioniert dies auch zum Zurücksetzen, nicht zum Initialisieren des Arrays?
– ma11hew28
26. April 2014 um 20:24 Uhr
Warum nicht einfach int arr[20] = {}; ohne das 0?
– Stefan Pochmann
10. Mai 2016 um 13:41 Uhr
@StefanPochmann weil es C ist, nicht C++.
– Weihang Jian
23. September 2017 um 4:42 Uhr
@PrasoonSaurav Schön, aber ich denke, es funktioniert nicht für dynamische Arrays
– aderchox
5. Januar 2019 um 16:41 Uhr
Ich denke, das macht nicht klar, dass es das Element in den Klammern nicht kopiert. So float control[16] = {15.0}; ist kein Array mit 15.0 16 mal kopiert, ist aber eins 15.0und der Rest ist 0.
Das kann falsch sein. Du solltest entweder schreiben sizeof arr oder 20 * sizeof (int)
– Benutzer297171
21. Juni 2013 um 9:01 Uhr
Ich war zuerst verwirrt, aber dann erinnerte ich mich: “Wenn ein Typname verwendet wird, muss er immer in Klammern eingeschlossen werden, während Ausdrücke mit oder ohne Klammern angegeben werden können” (de.wikipedia.org/wiki/Sizeof)
– taz
20. August 2014 um 4:34 Uhr
@BarafuAlbino Wie kann sizeof(arr) falsch sein?
– Jagdisch
19. Juli 2015 um 11:59 Uhr
Könnte es auch für Nicht-Null-Werte verwendet werden? Ich habe es versucht und es scheint nicht so.
– aderchox
5. Januar 2019 um 16:55 Uhr
Hinweis: Sie können memset mit jedem Zeichen verwenden.
Beispiel:
int arr[20];
memset(arr, 'A', sizeof(arr));
Könnte auch teilweise gefüllt sein
int arr[20];
memset(&arr[5], 0, 10);
Aber seien Sie vorsichtig. Es ist nicht auf die Array-Größe beschränkt, Sie könnten Ihrem Programm leicht schweren Schaden zufügen, indem Sie Folgendes tun:
int arr[20];
memset(arr, 0, 200);
Es wird (unter Windows) und null Speicher nach Ihrem Array funktionieren. Es könnte andere Variablenwerte beschädigen.
Dies ist ein perfektes Beispiel für UB (undefiniertes Verhalten). Der Compiler kann tun, was er will, wenn er darauf stößt, was normalerweise bedeutet, dass Dinge kaputt gehen.
– wizzwizz4
9. Februar 2017 um 16:47 Uhr
int arr[20] = {0} Am einfachsten wäre es, wenn es nur einmal gemacht werden müsste.
Mann 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').
-1 etwas mehr Text aus der Manpage: … Diese Funktion ist veraltet (in POSIX.1-2001 als LEGACY markiert): Verwenden Sie memset(3) in neuen Programmen. …
– pmg
12. April 2011 um 13:45 Uhr
In der C-Sprache gibt es keinen Header namens strings.h. Es ist eine (unnötige/sinnlose) nicht standardmäßige Compiler-Erweiterung.
– Ludin
12. April 2011 um 14:28 Uhr
iRaivis
Verwenden memset:
int something[20];
memset(something, 0, 20 * sizeof(int));
-1 etwas mehr Text aus der Manpage: … Diese Funktion ist veraltet (in POSIX.1-2001 als LEGACY markiert): Verwenden Sie memset(3) in neuen Programmen. …
– pmg
12. April 2011 um 13:45 Uhr
In der C-Sprache gibt es keinen Header namens strings.h. Es ist eine (unnötige/sinnlose) nicht standardmäßige Compiler-Erweiterung.
– Ludin
12. April 2011 um 14:28 Uhr
14120900cookie-checkNullen Sie ein Array in C-Code [duplicate]yes
auch stackoverflow.com/questions/201101/…
– tobyodavies
12. April 2011 um 13:46 Uhr
Dein “Beispiel” macht nicht das, was du denkst.
– R.. GitHub HÖR AUF, EIS ZU HELFEN
12. April 2011 um 13:49 Uhr
Der von Ihnen gepostete Code ist kein gültiges C. Versuchen Sie, etwas zu posten, das kompiliert wird.
– Ludin
12. April 2011 um 14:27 Uhr