INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
wie kann ich zur Laufzeit die Größe dieses Array festlegen?
21.04.2015, 19:51 (Dieser Beitrag wurde zuletzt bearbeitet: 21.04.2015 19:52 von avoid.)
Beitrag #1
wie kann ich zur Laufzeit die Größe dieses Array festlegen?
ich habe ein int-Array ohne Größe definiert.
Code:
int mein_array[];
wie kann ich zur Laufzeit die Größe dieses Array festlegen?
ich kann doch nicht einfach her gehen und mein_array[0]; oder mein_array[123]; mit Inhalt beschreiben oder?
und wenn doch, überschreibt das Array Speicherbereiche wenn es wächst?

Gute Fragen sind wie ein wissenschaftliches Experiment. Sie setzen eine Menge Wissen bereits voraus.
bitcoin:1J5dgQQp8eUy8wkUxyztBUVCkCpo5MQEQs?label=Danke
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.04.2015, 20:37
Beitrag #2
RE: wie kann ich zur Laufzeit die Größe dieses Array festlegen?
(21.04.2015 19:51)avoid schrieb:  ich habe ein int-Array ohne Größe definiert.
Code:
int mein_array[];
wie kann ich zur Laufzeit die Größe dieses Array festlegen?
ich kann doch nicht einfach her gehen und mein_array[0]; oder mein_array[123]; mit Inhalt beschreiben oder?
und wenn doch, überschreibt das Array Speicherbereiche wenn es wächst?

Hallo,
also ich kann mir nicht vorstellen das die Arduino Umgebung dynamisch Arrays erzeugen und verwalten kann. Von daher kann man nur hergehen und ein Array mit der maximal zu erwartenden Größe zu definieren und dann selber verwalten bis wie weit es genutzt wird. Hier ist deine eigene Kreativität dann gefordert.
Es sei denn es weis jemand mehr darüber...Shy

lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.04.2015, 20:55
Beitrag #3
RE: wie kann ich zur Laufzeit die Größe dieses Array festlegen?
kopiere mal deinen programm-code rein und die stelle wo du das array dynamisch festlegen willst!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.04.2015, 21:04
Beitrag #4
RE: wie kann ich zur Laufzeit die Größe dieses Array festlegen?
(21.04.2015 19:51)avoid schrieb:  wie kann ich zur Laufzeit die Größe dieses Array festlegen?
Ich denke mal, dass Dein Coding schon nicht durch den Compiler geht. D.h. es gibt gar kein Array, was die Frage semantisch unsinnig macht.
[sheldoncoopermodusoff/]
Zitat:ich kann doch nicht einfach her gehen und mein_array[0]; oder mein_array[123]; mit Inhalt beschreiben oder?
Doch, das kann man.
Zitat:und wenn doch, überschreibt das Array Speicherbereiche wenn es wächst?
Naja, C++ hat keine eingebaute Prüfung auf Array-Grenzen. Das System schreibt dann halt lustig irgendwo "hinter" Dein Array. Was dann passiert kann niemand so genau sagen. Das sollte man also nicht machen.
Es geht wahrscheinlich so:
Code:
int* mein_array;
mein_array = malloc(n * sizeof(int));  // n Elemente reservieren
mein_array[27] = 42;  // das sollte man nur machen, wenn n > 27
free(mein_array);  // das sollte man machen, wenn man das Array nicht mehr braucht
Du solltest dabei allerdings bedenken, dass der Speicher eines Arduino nicht gerade riesig ist. Wenn man da zu viel dynamisch macht, dann verliert man schnell den Überblick. Besser, man kommt ohne sowas aus.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.04.2015, 21:31 (Dieser Beitrag wurde zuletzt bearbeitet: 21.04.2015 21:33 von avoid.)
Beitrag #5
RE: wie kann ich zur Laufzeit die Größe dieses Array festlegen?
das Array das ich dynamisch gestalten will soll als Puffer für eine Displayausgabe fungieren.
da die Auflösung des Display sich ändern kann, soll sich auch die Größe des Puffer ändern können.

ich definiere quasi das Array leer und wenn das Display mit seiner entsprechenden Auflösung initialisiert wird,
erst dann ist bekannt wie groß der Puffer sein muss (Puffergröße=x*y) so zu sagen.

malloc() bringt mir ja auch nur was wenn der Speicherbedarf bekannt ist.
dann geht's wohl nicht anders.
dann initialisiere ich eben erst und erzeuge dann das Array. Sad
aber mal im ernst, dann hätte ich auch ne PICAXE mit Basic füttern können anstelle eines Arduino. Wink
langsam frage ich mich warum ich überhaupt zum Arduino gewechselt bin, hätte wohl lieber einen .net gadgeteer kaufen sollen.

Gute Fragen sind wie ein wissenschaftliches Experiment. Sie setzen eine Menge Wissen bereits voraus.
bitcoin:1J5dgQQp8eUy8wkUxyztBUVCkCpo5MQEQs?label=Danke
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.04.2015, 06:21
Beitrag #6
RE: wie kann ich zur Laufzeit die Größe dieses Array festlegen?
Moin,
da mich das Thema auch interessiert habe ich mal die Glaskugel (ist jedem zugänglich) befragt und habe diese auch für mich verständliche Seite gefunden.
Hier müßte man mal noch mit ein paar Arrays experimentieren um nachzuweisen das das auch so funktioniert. Immerhin geht es durch den Compiler der 1.0.6er IDE Version durch.

Code:
//unter den Variablen:
    int size=10;
    int *array;

// unter Setup oder Loop dann:
array = (int *) malloc(size * sizeof(int));

Denn mal frohes austesten.
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.04.2015, 07:21 (Dieser Beitrag wurde zuletzt bearbeitet: 22.04.2015 07:23 von Thorsten Pferdekämper.)
Beitrag #7
RE: wie kann ich zur Laufzeit die Größe dieses Array festlegen?
(21.04.2015 21:31)avoid schrieb:  ich definiere quasi das Array leer und wenn das Display mit seiner entsprechenden Auflösung initialisiert wird,
erst dann ist bekannt wie groß der Puffer sein muss (Puffergröße=x*y) so zu sagen.

malloc() bringt mir ja auch nur was wenn der Speicherbedarf bekannt ist.
dann geht's wohl nicht anders.
Hä? Irgendwann muss ja schon der Speicherbedarf bekannt sein. Du kannst ja zuerst das Display initialisieren und danach sowas wie das hier machen:
Code:
mein_array = (int*) malloc(x*y * sizeof(int));
Gruß,
Thorsten

(22.04.2015 06:21)Bitklopfer schrieb:  
Code:
array = (int *) malloc(size * sizeof(int));
Ah ja, den cast auf int* hatte ich vergessen. malloc liefert ja void* zurück und ein downcast muss explizit gemacht werden.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.04.2015, 09:02
Beitrag #8
RE: wie kann ich zur Laufzeit die Größe dieses Array festlegen?
(22.04.2015 07:21)Thorsten Pferdekämper schrieb:  ....Ah ja, den cast auf int* hatte ich vergessen. malloc liefert ja void* zurück und ein downcast muss explizit gemacht werden.
Gruß,
Thorsten

UFFF, du wirfst da mit Begriffen um dich die ein Selfmadehacker gar nicht kennt....dachte schon ich bin in Bohlens Casting-Show...zum Glück gibt es ne Glaskugel...Rolleyes
..und mit Zeigers unter C hatte ich es noch nie....Index auf ein Array ja...oder früher Indexregister auf dem uP in Assembler...
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Ein als "const" deklariertes Array übergeben Retian 5 130 08.11.2016 18:39
Letzter Beitrag: Tommy56
  String-Array füllen? torsten_156 9 452 08.07.2016 20:07
Letzter Beitrag: amithlon
  kann "localhost" nicht connecten sowerum 4 251 20.06.2016 20:57
Letzter Beitrag: sowerum
  Messwerte in Array speichern ArduinoMega2560 2 421 07.06.2016 16:30
Letzter Beitrag: SkobyMobil
  Wo kann ich hier noch Code spahren? (SPI-,Ethernet-,SD-,GSM-Library) avoid 4 384 05.06.2016 14:16
Letzter Beitrag: avoid
  Kann ich mit einem Arduino ein Gyro für Adroid Simulieren? Demitos 0 412 16.03.2016 18:33
Letzter Beitrag: Demitos
  Mein Arduino kann nicht Multiplizieren BennIY 1 563 29.02.2016 07:17
Letzter Beitrag: Bitklopfer
  AREF auf 2,5 Volt festlegen. arduinofan 3 320 12.02.2016 12:47
Letzter Beitrag: Bitklopfer
  array von Php --> Arduino zu senden (ethernet) Mourti 0 447 27.01.2016 22:11
Letzter Beitrag: Mourti
  Laufzeit Atwist 16 1.115 22.01.2016 21:49
Letzter Beitrag: hotsystems

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste