Array einer Funktion direkt übergeben

Gast #1015115
Lesenswert?

Hallo,

ich habe eine Funktion:
void Funktion(char data[])
{
...
}
Diese will ich nun mit direkten Werten aufrufen, ohne weitere Variable.
Das habe ich wie folgt versucht:

...
Funktion({0xFF,0x22,0x33});
und
Funktion([0xFF,0x22,0x33}]);


Führt aber beides nicht zum Erfolg. Kann mir jemand sagen wie ich dies 
lösen kann?

Danke im voraus
Ralf
Persönliche Seite #1015126
Lesenswert?

In C so gar nicht.

Die IMHO einfachste Variante wäre, das Array vorher als Variable 
anzulegen und dann einen Pointer auf das erste Element zu übergeben. Das 
Anlegen kann je nach µC lokal auch aus dem ROM heraus gemacht werden, 
wenn der SRAM-Platz kostbar ist.

Alternativ könnte man auch was mit Funktionen mit variabler Argumentzahl 
was fuddeln und sich innerhalb der Funktion das Array mit den Argumenten 
füllen bzw. die Argumente direkt bearbeiten.
Gast #1017677
Lesenswert?

Hallo,

wenn du keine Null in deinen Daten hast, dann kannst du auch folgendes 
nutzen:

1
void Funktion (char * Daten);


und aufrufen mit:
1
Funktion ("\xFF\x22\x33");


Wenn du doch eine Null in den Daten hast musst du die Länge mit 
übergeben (Falls nicht konstant):
1
void FunktionLen (char * Daten, int len);


und aufrufen mit:
1
FunktionLen ("\xFF\x22\x33\x00", 4);


mfg

DerDan

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren