Forum: Mikrocontroller und Digitale Elektronik übergebenes Array, verarbeiten und weitergeben


von Michael T. (Gast)


Lesenswert?

Hallo,

ich übergebe einer Funktion ein Array und dessen Länge.
Diese Funktion soll nun dass Array einer weiteren Funktion weitergeben 
werden, nur dass ein weiteres Element an erster Stelle eingefügt wird 
eingefüht wird.

Gibt es eine einfachere Möglichkeit, als ein neues Array zu 
initialisieren und den Inhalt des übergebenen array1 in das neue zu 
kopieren (mit den neuen Element) und dann dieses neue array an die 
function2 zu übergeben?
1
uint8_t function1 (uint8_t *array1, uint8_t array1_length)
2
{
3
  //gesuchter Code   
4
  return function2(array1, array1_length + 1); 
5
}
6
7
uint8_t function2 (uint8_t *array2, uint8_t array2_length)

Danke
Michi

von Hans (Gast)


Lesenswert?

Das zusätzliche Element als eigenen Parameter übergeben.

von Thomas E. (thomase)


Lesenswert?

Man kann keine Arrays übergeben, sondern einen Pointer auf ein Array. 
Mit Hilfe dieses Pointers kannst du das Array bearbeiten und reichst den 
Pointer an die nächste Funktion weiter. Du kannst aber in ein Array kein 
weiteres Element einfügen.

Was soll das Ganze denn werden?

mfg.

von Walter S. (avatar)


Lesenswert?

Thomas Eckmann schrieb:
> Du kannst aber in ein Array kein
> weiteres Element einfügen.

wenn noch Platz im Array ist kann man schon ein Element einfügen

von Thomas E. (thomase)


Lesenswert?

Walter S. schrieb:
> wenn noch Platz im Array ist kann man schon ein Element einfügen
Schreib hier nicht so ein wirres Zeug. In ein Array kann man kein 
Element einfügen.

mfg.

von Thomas Beck (Gast)


Lesenswert?

Man könnte das Array bereits 1 Element größer anlegen. In der Funktion, 
die function1 aufruft, erst ab array1[1] befüllen und trotzdem den 
Pointer auf array1, also auf das nicht initialisierte Element array1[0] 
an function1 übergeben. In function1 dann array1[0] befüllen. Und an 
function2 ebenfalls den Pointer auf array1 übergeben.

von Thomas E. (thomase)


Lesenswert?

Thomas Beck schrieb:
> Man könnte das Array bereits 1 Element größer anlegen.
Ja. Das ist die einzige Möglichkeit.

mfg.

von Walter S. (avatar)


Lesenswert?

Thomas Eckmann schrieb:
>> wenn noch Platz im Array ist kann man schon ein Element einfügen
> Schreib hier nicht so ein wirres Zeug. In ein Array kann man kein
> Element einfügen.

du vielleicht nicht

von Thomas E. (thomase)


Lesenswert?

Walter S. schrieb:
> du vielleicht nicht
Nein. Mit Sicherheit nicht.
Aber erzähl doch mal, wie man ein Array vergrössert. Man lernt ja nie 
aus.

mfg.

von Walter S. (avatar)


Lesenswert?

Thomas Eckmann schrieb:
> Aber erzähl doch mal, wie man ein Array vergrössert. Man lernt ja nie
> aus.

von Array vergrößern habe ich kein Wort geschrieben, ich schrieb:

Walter S. schrieb:
> wenn noch Platz im Array ist kann man schon ein Element einfügen

das mache ich mit einer sogenannten for-Schleife, ich schiebe alle 
Elemente um einen Platz nach hinten und schreibe das neue Element auf 
den ersten, jetzt freien Platz

von Justus S. (jussa)


Lesenswert?

Walter S. schrieb:
> das mache ich mit einer sogenannten for-Schleife, ich schiebe alle
> Elemente um einen Platz nach hinten und schreibe das neue Element auf
> den ersten, jetzt freien Platz

das hat aber nichts mit 'Element einfügen' zu tun...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Thomas Eckmann schrieb:
> Aber erzähl doch mal, wie man ein Array vergrössert.

Wenn es mit Mitteln der dynamischen Speicherverwaltung (malloc & co.) 
angelegt wurde, hilft hier realloc.

Und mit memmove kann man Arrayinhalte verschieben.

Bei so einer Konstruktion könnte aber eine verkettete Liste eine 
geschicktete Organisationsform sein.

von Thomas E. (thomase)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Wenn es mit Mitteln der dynamischen Speicherverwaltung (malloc & co.)
> angelegt wurde, hilft hier realloc.

Das ist aber nicht das, was hier gemeint ist:

Walter S. schrieb:
> wenn noch Platz im Array ist kann man schon ein Element einfügen

Und dem TO hilft das auch nicht weiter.

mfg.

von Daniel A. (daniel-a)


Angehängte Dateien:

Lesenswert?

Vileicht könnte er das Array durch einen Ring Buffer ersetzen.

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.