Es ist eine Weile her, seit ich C-Code angeschaut habe, aber ich versuche sicherzustellen, dass ich verstehe, was hier vor sich geht. Jemand hat dies deklariert (hat mehr Mitglieder in seinem Code):
%Vor%Später benutzen sie das dann als Teil einer for-Schleife:
%Vor%Ich denke, der erste Teil ist die Anzahl der Bytes im Array und der zweite Teil muss die Größe jedes Array-Mitglieds sein, was uns die Anzahl der Elemente im Array gibt. Ist dies eine Standardmethode zur Berechnung der Array-Länge und was ist die zweite Größe, die es tatsächlich macht?
Ja, nachdem die verwirrende Syntax korrigiert wurde, wird dies
%Vor%oder noch besser
%Vor% Dies ist der bevorzugte Weg, um die Anzahl der Elemente eines Arrays zu berechnen. Der zweite sizeof
berechnet tatsächlich die Größe des Elements 0
des Arrays.
Beachten Sie, dass dies nur funktioniert, wenn trysizes
tatsächlich ein Array ist, kein Zeiger auf eins.
Sie haben es verstanden. Der zweite sizeof
im Nenner dekrementiert das erste Element des Arrays und ergibt die Größe des Elements 0
. sizeof
kennt die gesamte Puffergröße einer Array-Variablen - den Zähler - und daher liefert dieses Idiom die Anzahl der Elemente im Array.
Nach meiner Erfahrung ist dies ein ungewöhnlicher Ausdruck dieses speziellen Idioms, das ich normalerweise gesehen habe, und ich benutze :
%Vor%Dies identifiziert die Variable deutlicher als Array und nicht als Zeiger.
Dies ist ein ziemlich üblicher Trick, aber beachte, dass es nur funktioniert, wenn die Variable als ein Array deklariert wird, z. Dies funktioniert nicht bei einem Array, das als Funktionsparameter in einen Zeiger umgewandelt wurde.