C statische Array-Größe finden

Lesezeit: 1 Minute

Benutzer-Avatar
iss_eine_Zitrone

static char* theFruit[] = {
    "lemon",
    "orange",
    "apple",
    "banana"
};

Ich weiß, dass die Größe 4 ist, indem ich mir dieses Array ansehe. Wie finde ich programmgesteuert die Größe dieses Arrays in C? Ich möchte nicht die Größe in Bytes.

Benutzer-Avatar
Fred Fu

sizeof(theFruit) / sizeof(theFruit[0])

Beachten Sie, dass sizeof(theFruit[0]) == sizeof(char *)eine Konstante.

  • Ja, es ist genau der Weg dorthin. Deshalb bekommt er +1s…. :-). Aber nur mit Arrays, wie Sie in Ihrer Frage haben. Nicht mit Zeigern.

    – Israel Untermann

    23. April 2012 um 15:23 Uhr


  • @eat_a_lemon: hängt davon ab, wie Sie jeden Fall nennen 🙂 Es funktioniert für statische und automatische Arrays, nicht mallocwürd diejenigen. Beachten Sie, dass die Größe des Arrays immer ein Vielfaches der Größe des ersten Elements ist, sodass die Division garantiert funktioniert, und das sizeof betrachtet nur Typen, also funktioniert es sogar für Arrays mit null Elementen.

    – Fred Foo

    23. April 2012 um 15:23 Uhr

  • Ich denke, was mich verwirrt, ist, dass die Einträge eine variable Größe haben, weil sie Zeichenfolgen sind.

    – iss_eine_Zitrone

    23. April 2012 um 15:30 Uhr

  • @eat_a_lemon: die Einträge sind keine Strings; Sie sind char*s zeigt auf Saiten.

    – Fred Foo

    23. April 2012 um 15:31 Uhr

Verwenden Sie stattdessen const char*, da sie an einem schreibgeschützten Ort gespeichert werden. Und um die Größe des Arrays zu erhalten
unsigned size = sizeof(theFruit)/sizeof(*theFruit);
Sowohl *theFruit als auch theFruit[0] sind gleich.

1282350cookie-checkC statische Array-Größe finden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy