Pages: [1]   Go Down
Author Topic: Array leeren, zuweisen, an eine Funktion weitergeben.  (Read 885 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Wie gestalte ich den Code wenn den Inhalt von einem Array an das andere Array 1 zu 1 weitergeben möchte?

Code:
char* myArray1[] = {"Dick", "Lang", "Hoch"};
char myArray2[];
myArray2 = myArray1;
In etwa so?!

Wie gebe ich das Array an eine andere Funktion weiter?

Code:
viod loop(){
char* meinArryImHauptLoop[];
...
meinArryImHauptLoop = meineFunktion();
}

char meineFunktion (){
char* myArray[] = {"Gross", "Klein"};
return myArray;
}

Wie leere ich das Array?
Code:
char* myArray[] = {"Gross", "Klein"};  // Bin voll.
... myArray; // Bin leer.

Arduino IDE ist noch sehr schlecht dokumentiert, gibt es diese Funktionen überhaupt?
Logged

Germany, Osnabrück
Offline Offline
God Member
*****
Karma: 30
Posts: 658
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Zu Punk 1: Array Kopieren
Code:
#define _myArray_cnt 3

void setup()
{
  //definieren mit fester größe
  char* myArray1[_myArray_cnt] = {"Dick", "Lang", "Hoch"};
  char* myArray2[_myArray_cnt];

  //kopieren, element für element
  for(unsigned int i=0;i<_myArray_cnt;i++) {
    myArray2[i] = myArray1[i];
  }
}
void loop() {}

Punkt 2: Weitergabe
Code:
#define _myArray_cnt 3

//global definieren
char* myArray1[_myArray_cnt] = {"Dick", "Lang", "Hoch"};

char meineFunktion()
{
  myArray1[0] = "Doof"; 
}

void setup()
{
  //definieren mit fester größe
  char* myArray1[_myArray_cnt] = {"Dick", "Lang", "Hoch"};
 
  //funktionsaufruf
  meineFunktion();
 
}
void loop() {}
Geht glaub ich nur Global, ansonsten musst du mit  Pointer of Pointer of .... arbeiten, ab dann wird es sehr sehr kompliziert.

Punkt 3: Array Leeren
Code:
#define _myArray_cnt 3
char* myArray1[_myArray_cnt] = {"Dick", "Lang", "Hoch"};

for(unsigned int i=0; i<_myArray_cnt;i++) {
  myArray1[i] = "";
}

Zu dem ganzen sei noch gesagt, dass man in C schreibt, nicht in C++.
In C gibt es keine Array Funktionen die einem das leben leicht machen, dort muss man mit Zeigern arbeiten was die meisten nicht mögen.

Die schönen Funktionen, die die Speicherverwaltung übernehmen (z.B. malloc) sollte man auf µC nicht verwenden.
 





Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21859
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dazu ist zu sagen, daß man die Arraygröße zur Laufzeit nicht ändern kann. Wenn man zuviele Elemente in ein Array schreibt ( z beispiel 4 Werte in ein 3er-Array) gibt es keine Kontrolle oder Fehlermeldung die das verhindert.Man überschreibt den Speicherinnhalt nach dem für die ArrayVariable reservierten Speicherbereich. Dies führt zu unvorhersagbaren, unerklärlichen Fehlfunktionen des Programms.
Grüße Uwe
Logged

Pages: [1]   Go Up
Jump to: