Array einer Funktion direkt übergeben

Gast #1015115
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
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
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

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.