www.mikrocontroller.net

Forum: Compiler & IDEs Array


Autor: Wir (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich versuche ein einfaches Array zu erstellen und danach zu beschreiben.
uint16_t temp[10][1];   // Array erstellen

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 ?!

Autor: Wir (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
temp[0][0] =  0;

muss in die main()
dann gehts

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: kosmonaut pirx (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Wir (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder halt umgekehrt, eine struct mit den Daten und dann ein Array 
daraus.

Autor: Jens Sch (jenser)
Datum:

Bewertung
0 lesenswert
nicht 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];

Autor: der mechatroniker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Link zu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Link zu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
char test[Y][X][Z]={{{0}}};

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wohl eher memset() als memcpy()?

Autor: Link zu (Gast)
Datum:

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

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Jens Sch (jenser)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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-Refe...

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo er recht hat, hat er recht.

Der andere Klaus

Autor: Jens Sch (jenser)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.