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

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