Wilhelm M. schrieb:
> Wie sagte schon Bjarne: C-Arrays sind so dumm, sie kennen noch nicht
> einmal ihre Länge.
Naja, ein Array kennt eigentlich schon seine Länge:
1 | #include <stdio.h>
|
2 |
|
3 | int main()
|
4 | {
|
5 | char c[500];
|
6 | printf("%zu\n", sizeof c);
|
7 | return 0;
|
8 | }
|
Die Array-Länge ist allerdings nicht Teil des einzelnen Arrays, sondern
seines Typs. Die Probleme fangen dann bei Zeigern an, weil ein:
toto schrieb:
> uint8_t* payload;
ein Zeiger auf einen uint8_t ist, nicht mehr und nicht weniger. Dieser
uint8_t kann zwar das erste Element eines Arrays sein und ist es per
Konvention auch oft, aber dem Zeiger ist das egal. Für den ist das
Zeigerziel nur ein einzelner uint8_t, daher weiß er auch nichts von
Array-Größen.
Es gibt auch Zeiger auf Arrays. Die kennen dann die Array-Größe wieder,
aber auch nur über den Typ.