Leeres Byte Array übergeben

Gast #3526024
Lesenswert?
• ▲
▼
Hallo,

ich habe folgende Funktion/Problem:

void SendDyn(uint8_t ID, uint8_t Data[])

Wie kann ich diese mit einem leeren Array "Data" aufrufen?

SendDyn(1,0) sorgt bei mir dafür dass der Debugger ein ominöses Array 
192 anzeigt. Ein sizeof(Data) ergibt eine 2?

Wieso ist das alles so?

Vielen Dank schonmal
Thomas
Gast #3526038
Lesenswert?
• ▲
▼
Ein Array in C ist ein einfacher Pointer, sprich "Adresse". Mit 
"sizeof(Data)" hast du nun herausgefunden, dass diese Adresse - bzw. der 
Pointer - 2 Byte groß ist. Klasse. Vielleicht solltest du in der 
Funktion noch auf null prüfen, statt einfach so zu dereferenzieren.
#3526040
Lesenswert?
• ▲
▼
Also du willst ein Array der Funktion übergeben?

Dann würde ich es so schreiben:
1
void SendDyn(uint8_t ID, uint8_t* Data) {
2
  ...
3
}
4

5
void main() {
6
  uint8_t array[10];
7

8
  ...
9
  SendDyn(1, array);
10
  ...
11
}

Damit übergibst du ein leeres Array mit 10 Elementen deiner Funktion. 
Innerhalb der Funktion kannst du dann mit Pointer Syntax auf die Array 
Elemente zugreifen.
Ob das Array vorher befüllt wurde oder nicht ist dabei egal. Damit 
kannst du also Werte im Array der Funktion übergeben oder Rückgabewerte 
innerhalb der Funktion in das Array schreiben um es dann außerhalb der 
Funktion auszuwerten.

Ciao,
     Rainer
Gast #3526259
Lesenswert?
• ▲
▼
Stefan Rand schrieb:
> Dr. Best schrieb:
>> Ein Array in C ist ein einfacher Pointer, sprich "Adresse".
>
> Das ist falsch, und es wäre nett, wenn die Leute das endlich mal lernen
> würden. :-/

Was denn? Weil der Compiler da noch 'nen Typ ranklebt? Kannste auch 
casten wie du lustig bist und am Ende bleibt als Substanz nur der 
"Wert", die Adresse. Auch zur Laufzeit.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.