Alle Werte im Array auf "Null" setzen
-
freshman.get(sein_senf); liefert:
#include<iostream> using namespace std; int main(){ int feld[120]; int * pointer_feld = NULL; memset(feld, 0, 120*sizeof(int)); pointer_feld=feld; for (int i=0;i<120;i++){ cout << pointer_feld[i]; } return 0; }
-
@Hendrix
Und du solltest das i noch irgendwo in der Schleife inkrementieren. Sonst hagelt es nämlich seg-faults.
-
Verdammt, ich war zu langsam!
-
DarthZiu schrieb:
Verdammt, ich war zu langsam!
Jaaaa! Helfen!! Fragen beantworten bis 1 Uhr nachts und dann vor Erschöpfung umfallen!
-
@Hendrix
Also, wenn es reine Zeiger-Arithmetik sein soll, dann kannst du es wie folgt machenint feld[120]; int* pointer_feld = feld; int* feld_ende = &feld[120]; while (pointer_feld != feld_ende) { *pointer_feld = 0; cout << *pointer_feld; ++pointer_feld; }
Wenn Zeiger nicht zwangsläufig vorgeschrieben sind, dann funktioniert das auch mit zero-initialization
int feld[120] = {0};
btw:
Such mal hier im Forum nach "void main".
-
@groovemaster: Setzt das tatsächlich alle Elemente auf 0?
MfG SideWinder
-
Laut Standard ja. Aber das funktioniert halt nur mit 0, deshalb auch zero-initialization. Sowas setzt zB nur das erste Element
int feld[120] = {5};
-
falls du doch memset benutztdann doch besser so
memset(feld, 0, sizeof(feld)*sizeof(int));
dann musst du nur einmal 120 schreiben und kannst diese 120 auch später besser verändern
-
Geht aber leider nur auf Compilern, auf denen sizeof(int) == 1 gilt. sizeof gibt bereits die Größe in Bytes zurück.
-
operator void schrieb:
Geht aber leider nur auf Compilern, auf denen sizeof(int) == 1 gilt. sizeof gibt bereits die Größe in Bytes zurück.
sizeof(int) ist auf 32 Bit Plattformen i.d.R. 4.
Der Code ist aber trozdem korrekt, da memset Byteweise in den Speicher schreibt.
memset(array,füllwert,speicherblockgröße/*anzahlelemente*elementgröße*/);Devil
-
devil81 schrieb:
sizeof(int) ist auf 32 Bit Plattformen i.d.R. 4.
Der Code ist aber trozdem korrekt, da memset Byteweise in den Speicher schreibt.Nein, ist er nicht, da sizeof(feld) ja schon die Gesamtgrösse in Bytes angibt, also anzahl_elemente(feld) * element_groesse_in_bytes(feld).
-
stimmt
Fehler gemacht.