Wie array in einem struct initialisieren?
-
Das ist C++.
Wie wäre es mit:
struct example one = {10, {1, 2, 3, 4, 5, 6, 7, 8}};
-
hagenb schrieb:
one.array[] = {1,2,3,4,5,6,7,8}; /* Fehlermeldung Compiler */
Eben das ist keine Initialisierung, sondern, wie Shade schon schrieb, eine Zuweisung.
-
Hallo Leute,
ich gebe mich geschlagen, es wird wohl doch eine Zuweisung sein.
Habe da wohl meine C/C++ Referenz falsch verstanden.Trotzdem würde mich interessieren, wie man so eine komplette array-Zuweisung machen kann.
Vielen Dank, der Code funzt wunderbar!
Hagen
-
hagenb schrieb:
Trotzdem würde mich interessieren, wie man so eine komplette array-Zuweisung machen kann.
wenn du das array mit lauter gleichen werten füllen willst, dann memset ansonsten per hand
Array[10]; for(int i; i < 10; i++) { Array[i] = i; }
-
ich frage mich gerade welche Werte ein Array hat das nur "halb" initialisiert wird:
#include <stdio.h> void foo(void) { int counter; int Array[10] = {3, 4, 1321, 2}; for(counter = 0; counter < 10; counter++) { printf("%d\n", Array[counter]); } } int main(void) { foo(); return 0; }
Ersaunlicherweiße sind die Elemente 5 bis 9 des Arrays mit Nullen belegt und nicht mit irgendwelchen schwachsinnigen Werten - Zufall oder ist das so festgelegt?
-
Vertexwahn schrieb:
Ersaunlicherweiße sind die Elemente 5 bis 9 des Arrays mit Nullen belegt und nicht mit irgendwelchen schwachsinnigen Werten - Zufall oder ist das so festgelegt?
Ist so festgelegt:
C++ lernen und Profesionell anwenden schrieb:
[...}Ist die Länge des Vektors angegeben, jedoch größer als die Anzahl der Initialisierungswerte, so werden die restlichen Vektorelemente mit 0 belegt. [...]
Caipi
-
hab ich bisher gar nicht gewusst... wie wird den ein Array im Speicher abgelegt? gibt es da padding bytes oder sonstige Schweinereien?
-
Bei 'nem Array gibt's garantiert keine Padding Bytes.
-
Vertexwahn schrieb:
wenn du das array mit lauter gleichen werten füllen willst, dann memset
Und wie soll das gehen? Gib mir doch einfach mal ein Beispiel, wie du alle Elemente des Arrays mit memset auf 1 setzt.
memset funktioniert nur sinnvoll mit unsigned char (bzw. char / signed char) Arrays.
-
groovemaster schrieb:
Und wie soll das gehen? Gib mir doch einfach mal ein Beispiel, wie du alle Elemente des Arrays mit memset auf 1 setzt.
ups... stimmt sorry - geht natürlich nur für den Wert 0