array_length in C

Schrieb ich einen array_length-Funktion wie diese:

int array_length(int a[]){
    return sizeof(a)/sizeof(int);
}

Aber es ist wieder 2, wenn ich nicht

unsigned int len = array_length(arr);
printf ("%i" , len);

wo ich

int arr[] = {3,4,5,6,1,7,2};
int * parr = arr;

Aber wenn ich einfach

int k = sizeof(arr)/sizeof(int);
printf("%i", k);

in der main-Funktion, es gibt 7.

Was ist die richtige Art zu schreiben, die array_length-Funktion und wie benutze ich es?

Obwohl einige Leute in der unten zur Verfügung gestellt haben ein makro, das funktioniert, ist es wichtig zu verinnerlichen, dass C von anderen Sprachen (Java, C#, etc.), arrays wirklich nur Pointer auf einen Speicherblock, und es s bis zu Ihnen, zu verfolgen die Länge. Wenn Sie "get", wird es machen das arbeiten mit C viel, viel einfacher.

InformationsquelleAutor SuperString | 2010-01-18

Schreibe einen Kommentar