die Größe der zwei-dimensionales array in C
Habe ich die folgenden zwei-dimensionales array:
#define ROW 100
#define LINE 50
int a[ROW][LINE];
aber, wie man den sizeof-array für die letzten 45 Zeilen, zum Beispiel a[55][0]
zu a[99][99]
?
können wir etwas tun, wie sizeof(&a[55])
?
Der 45 letzten Zeilen wäre
ja, danke!
Als Hunter sagte, aber Sie wollen in der Regel vermeiden Feste Größe arrays, denn Sie sind hartzucodieren die Größe des Puffers und an einem gewissen Punkt werden Sie wollen, um mehr Speicher...
können wir den Zeiger um die Größe, dies kann vermeiden Sie die Feste Größe der arrays
Verwenden Sie den Mauszeiger, um die Größe nicht wirklich sinnvoll -- sizeof(int *) ist fest (in der Regel 4 oder 8 Byte, je nach Bogen, aber dies ist nicht garantiert), unabhängig wie viel Speicher zugeordnet ist, an dem Ort, den Zeiger verweist.
a[55][0]
zu a[ROW - 1][LINE - 1]
.ja, danke!
Als Hunter sagte, aber Sie wollen in der Regel vermeiden Feste Größe arrays, denn Sie sind hartzucodieren die Größe des Puffers und an einem gewissen Punkt werden Sie wollen, um mehr Speicher...
können wir den Zeiger um die Größe, dies kann vermeiden Sie die Feste Größe der arrays
Verwenden Sie den Mauszeiger, um die Größe nicht wirklich sinnvoll -- sizeof(int *) ist fest (in der Regel 4 oder 8 Byte, je nach Bogen, aber dies ist nicht garantiert), unabhängig wie viel Speicher zugeordnet ist, an dem Ort, den Zeiger verweist.
InformationsquelleAutor user2131316 | 2013-06-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
sizeof
einem array ist garantiert gleich diesizeof
eines einzelnen Elements, multipliziert mit der Anzahl der Elemente. Also, wenn Sie wissen möchten, wie viel Speicher belegt ist, wird durch eine bestimmte Anzahl von Zeilen, berechnen Sie die Anzahl der Elemente und durch multiplizieren element Größe. 45 Zeilen erfordern würdeOder alternativ
Ist es eigentlich egal, ob diese letzten 45 Zeilen. Alle Zeilen sind die gleichen.
InformationsquelleAutor AnT
Wenn Sie nur die letzten Zeilen, die von Zeile 55 und weiter, wie etwa
Wenn Sie wollen einfach nur eine generische Zahl N der Zeilen, dann, wie über
Ist
sizeof int
korrekte syntax? Es ist nicht in C89 mindestensSobald ein array zerfällt in einen pointer, alle haben Sie ist der Zeiger, und Zeiger haben keine Informationen (wie Größe) über die Daten, die es zu Punkten.
Du hast Recht, ich habe immer mischen Sie den Ausdruck " aus und geben
sizeof
Betreiber. Das ist, warum ich in der Regel immer die Variante mit Klammern.Die syntax ist
sizeof expr
odersizeof ( type-name )
. Dieexpr
kann eine eingeklammerte Ausdruck. Es ist das gleiche wie in C89/C90, C99 und C11.InformationsquelleAutor Some programmer dude