Dirk schrieb:
> Kann man nicht die Länge eines Arrays über ainen
> Pointer bestimmen?
So wie bei dir nicht, da dein Pointer konzeptionell auf ein einzelnes
Element zeigt, nicht auf das ganze Array. Daher kriegst du bei
sizeof(ptr) nur die Grösse des Pointers selbst und bei sizeof(*ptr) die
Grösse eines Elements.
So hingegen geht es, aber die Information wird hier aus den deklarierten
Typ des Pointers ermittelt, nicht aus dem Array, und der Pointer verdaut
nun nur Arrays der Länge 5, was der Sache ihren Sinn nimmt:
1 | int main()
|
2 | {
|
3 | int days[5] = {1,2,3,4,5};
|
4 | int (*ptr)[5] = &days;
|
5 | printf("%u\n", sizeof(days));
|
6 | printf("%u\n", sizeof(*ptr));
|
7 |
|
8 | return 0;
|
9 | }
|
In C99 und GCC gibt es Arrays variabler Länge, was hier vielleicht
besser passen könnte, aber da muss ich vorerst passen.