Forum: Compiler & IDEs Array


von Wir (Gast)


Lesenswert?

Ich versuche ein einfaches Array zu erstellen und danach zu beschreiben.
1
uint16_t temp[10][1];   // Array erstellen
2
3
temp[0][0] =  0;      // Array füllen

Leider kommt immer:
"Error: the size of an array must be greater than zero"

Eigentlich sollte doch alles passen ?!

von Wir (Gast)


Lesenswert?

temp[0][0] =  0;

muss in die main()
dann gehts

von Oliver (Gast)


Lesenswert?

>Eigentlich sollte doch alles passen ?!

In den zwei geposteten Zeilen passt auch alles. Ergo liegt der Fehler 
woanders.

Also, wie immer, häng mal das ganze Programm an.

Oliver

von kosmonaut pirx (Gast)


Lesenswert?

hallo,
so richtig sinn macht das für mich aber alles nicht:

ein zweidimensionales feld, dessen zweite dimension (spalte) gleich eins 
ist, ist
ein lineares feld.

so ich mich denn nicht irre, kann der zweite index dann in die tonne 
geworfen werden.
vll aber zu einfach gedacht , ist schon spät,
bye kosmo

von Wir (Gast)


Lesenswert?

ja stimmt schon. Ich habe den dann auch weggelassen.

Eine andere Frage zum Thema:

Kann man die einzelnen Elemente der Matrix mit unterschiedlichen 
Datentypen versehen?
Beispiel: array[2][3]:

[bword] [word]  [byte]
[word]  [word]  [byte]

also 16- und 8-Bit mischen

von Thomas (Gast)


Lesenswert?

Nee, das geht nicht. Deklarierst ja ein Array mit nem festen Datentyp.

Kannst aber nen Struct basteln, das z.B. für jeden Datentyp ein Array 
enthält. Ist dann nur etwas umständlicher mit dem Aufruf.

MfG,
Thomas

von Rolf Magnus (Gast)


Lesenswert?

Oder halt umgekehrt, eine struct mit den Daten und dann ein Array 
daraus.

von Jens S. (jenser)


Lesenswert?

Sorry das ich diesen alten Beitrag benutze um meine Frage zu stellen, 
aber das Thema passt so gut^^.

Frage:

Ich habe ein 3faches Array (Matrix) und möchte die Werte zu beginn auf 0 
setzen. Gibt es hierfür eine Möglichkeit dies ohne der altbekannten 
"={{{}}};"-Methode bzw. einer Schleife zu tun?


Auszug meines Quellcodes^^:

unsigned char Puffer[24][10][12];

von der mechatroniker (Gast)


Lesenswert?

> Ich habe ein 3faches Array (Matrix) und möchte die Werte zu beginn auf 0
> setzen. Gibt es hierfür eine Möglichkeit dies ohne der altbekannten
> "={{{}}};"-Methode bzw. einer Schleife zu tun?

Einen noch älteren Thread konntest du dafür nicht ausgraben?

Zu deiner Frage:

Wenn das Array static ist (und du nur 1x ganz zu Programmstart Nullen 
brauchst), mach einfach gar nix.

Wenn das Array auf dem Stack liegt, nimm memset.

von Link zu (Gast)


Lesenswert?

Jens Sch schrieb:
> Ich habe ein 3faches Array (Matrix) und möchte die Werte zu beginn auf 0
> setzen. Gibt es hierfür eine Möglichkeit dies ohne der altbekannten
> "={{{}}};"-Methode bzw. einer Schleife zu tun?
memcpy

von Link zu (Gast)


Lesenswert?

Jens Sch schrieb:
> Ich habe ein 3faches Array (Matrix) und möchte die Werte zu beginn auf 0
> setzen. Gibt es hierfür eine Möglichkeit dies ohne der altbekannten
> "={{{}}};"-Methode bzw. einer Schleife zu tun?
memcpy() falls du das öfters im Programm machst, oder am Anfang mit 0 
initialisieren.
1
char test[Y][X][Z]={{{0}}};

von Klaus W. (mfgkw)


Lesenswert?

wohl eher memset() als memcpy()?

von Link zu (Gast)


Lesenswert?

Ja, hast recht...
Entweder es ist heute noch zu früh, oder es war gestern zu spät... ;-)

von Klaus (Gast)


Lesenswert?

Jens Sch schrieb:
> Sorry das ich diesen alten Beitrag benutze um meine Frage zu stellen,
> aber das Thema passt so gut^^.

Toll, rate mal, was ich als erstes gemacht hab, nachdem ich diesen 
Thread geöffnet habe? Richtig, ich habe angefangen ihn zu lesen. Nur um 
dann festzustellen, dass da später jemand kommt, der ne andere Frage 
hat. Danke dass du meine Zeit verschwendet hast. Nun hab ich ganz sicher 
kein Bock mehr dir zu helfen...

von Jens S. (jenser)


Lesenswert?

@all

Danke für eure Hilfe, memset ist ab heut mein "neuer Freund"^^!

@Klaus(Gast)

Solange du noch Zeit hast um dich aufzuregen, kann deine Zeitnot nicht 
allzu groß sein!

von Karl H. (kbuchegg)


Lesenswert?

Jens Sch schrieb:
> @all
>
> Danke für eure Hilfe, memset ist ab heut mein "neuer Freund"^^!


Dein neuer Freund sollte besser
"Kernighan & Ritchie, Programmieren in C"
heissen

http://www.amazon.de/Programmieren-C-ANSI-2-C-Reference/dp/3446154973

von Klaus (Gast)


Lesenswert?

> Solange du noch Zeit hast um dich aufzuregen, kann deine Zeitnot nicht
> allzu groß sein!

Ich habe keine Zeitnot, ich habe nur keine Lust sie sinnlos zu 
verschwenden. Und übrigens: in Foren alte Threads zu recyclen wird 
wirklich als schlechtes Benehmen angesehen. Das hab ich mir nicht 
ausgedacht!

von Klaus W. (mfgkw)


Lesenswert?

Wo er recht hat, hat er recht.

Der andere Klaus

von Jens S. (jenser)


Lesenswert?

Vielen Dank ihr vielen Kläuse^^!

Ich stelle mich schämend in die Ecke und denke darüber nach, was ich 
falsch gemacht habe. Aber in Zeiten der Finanzkrise, nimmt und recycelt 
man, was man kriegen kann!

Von mir aus kann der Thread geschlossen werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.