brechbunkt schrieb:
> Hallo,
>
> an meiner 32bit CPU habe ich eine Funktion, der ich eigentlich die
> Adresse eines Arrays übergeben wollte.
Eben. Du übergibst die Adresse des Arrays.
>
1 | int uartRead(char rxBuf[])
|
2 | > {
|
3 | > ...
|
4 | > memset(rxBuf, 0, sizeof(rxBuf));
|
5 | > ...
|
6 | > }
|
Du kannst an dieser Stelle kein sizeof verwenden. sizeof liefert dir
hier die Größe des Pointers, der da in Wirklichkeit übergeben wird, auch
wenn die Syntax etwas anderes suggeriert.
Übergib der Funktion die Länge als 2-ten Parameter und alles ist gut.
Innerhalb der Funktion kann man die Größe des Arrays vom Aufrufer
prinzipiell nicht feststellen.
> Kann mir jemand sagen warum das schief läuft?
Weil das hier
>
1 | int uartRead(char rxBuf[])
|
2 | >
|
nichts anderes als eine syntaktische Augenauswischerei für
1 | int uartRead(char * rxBuf)
|
ist. Da steckt nicht mehr dahinter. Insbesondere nicht das, was du
dahinter vermutest.