Hallo,ich übergebe einer Funktion 8 Werte.
In der Funktion ist nur eine for Schleife,die in ein array schreibt.
Wie kann ich es bewerkstelligen das in jedem durchlauf der for schleife
der nächste ubergebene wert benutzt wird?
void test (uint8_t a,uint8_t b, usw.bis uint8_t h)
{
for(uint8_z = 0;z<7;z++)
{
anzeige [0] [a] = 128;
}
}
Die Schleife soll also im ersten durchlauf den Wert von a,im zweiten den
Wert von b benutzen.
Ich hoffe,ich habe mich verständlich ausgedrückt.
Wäre nett,wenn mir jemand helfen könnte.
gruss
andy
Übergib nur einen Zeiger auf ein Feld und lass den hochzählen, dann
einfach auf den Inhalt zugreifen
uint8_t feld[8];
void test (uint8_t *zeiger)
{
for(uint8_z = 0;z<8;z++)
{
anzeige [0][*zeiger];
zeiger++;
}
}
Sorry Schnellschuss, besser so:
uint8_t feld[8];
void main()
{
test (feld);
}
void test (uint8_t *zeiger)
{
for(uint8_z = 0;z<8;z++)
{
anzeige [0][z] = *zeiger;
zeiger++;
}
}
Hallo,danke für die antwort.da sich die 8 werte ständig ändern,müsste ich sie ja jedesmal erst in test schreiben und die funktion schreibt sie dann in anzeige.Dann kann ich sie ja sofort in anzeige schreiben.Da ich das sehr oft ausführen muss,dachte ich mir ich übergebe die 8 werte an die funktion und sie schreibt die werte in das array. gruss andy
Wir rufst du denn die Funktion auf und wo ändern sich die Werte? Gib mal bissel mehr Code!
Hallo der zuschreibende wert ist immer der gleiche (128) nur die Stelle in dem zweidimensionalem Array ist unterschiedlich. gruss andy
Dann würde ich das glaub ich eher so aufrufen:
uint8_t feld[2];
void main()
{
feld[0] = blablabla; position im array definieren
feld[1] = blablabla;
schreiben(feld);
}
void schreiben(uint8_t *zeiger)
{
anzeige[zeiger][zeiger++] = 128;
}
oder über eine variable Argumentliste; sie muß ja nicht wirklich variabel sein.
andy schrieb: > Hallo,danke für die antwort.da sich die 8 werte ständig ändern,müsste > ich sie ja jedesmal erst in test schreiben und die funktion schreibt sie > dann in anzeige. Bei deiner Lösung schreibst du sie halt in die 8 Parameter der Funktion. Einige davon werden allerdings wahrscheinlich in Registern übergeben, was es ein paar Taktzyklen schneller machen dürfte. > Dann kann ich sie ja sofort in anzeige schreiben.Da ich das sehr oft > ausführen muss,dachte ich mir ich übergebe die 8 werte an die funktion > und sie schreibt die werte in das array. Nun, wie du dir das vorstellst, geht es nicht. Die einzige Alternative wäre dann die von Klaus erwähnte variable Argumentliste, aber die wird meines Wissens normalerweise komplett über den Stack übergeben, geht also auch über den Speicher. Damit gewinnst du also nichts.
Ich bin mir jetzt ned ganz sicher ohne es auszuprobieren, kann man in C Funktionen überladen?
Fabian V. schrieb: > kann man in C > Funktionen überladen? Das überladen läuft aber auch auf mehrere Funktionen raus. In C musst du die selber verwalten, in C++ macht das der Compiler.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.