Variable Sized Arrays vs calloc in C

Auf die Diskussion des dynamischen Arbeitsspeichers, hier: "Einführung in C Pointer und Dynamischer Speicher"

Der Autor fest:

Einen Speicherblock wie diese können effektiv verwendet werden, als eine mehr flexible array. Dieser Ansatz ist tatsächlich viel häufiger in der realen Welt von C-Programmen. Es ist auch vorhersehbarer und flexibler als ein "variable-size array"

Den Typ von Speicherblock wird er reden, ist wie folgt:

const int size = 5;
int * array = calloc(size, sizeof(int));

und dann mit einem anderen Zeiger zum iterieren über das array:

int * index = array;
for (i = 0; i < size; i++) {
    *index = 1; //or whatever value
    index++;
}

Meine Frage ist, wie ist diese Methode besser als ein standard-variable-size array wie dieses?:

int array[variable];

oder dynamisch:

char name[] = "Nick";

Der Autor nicht wirklich viel vergossen Licht auf, warum sollte ich bevorzuge die erstere Methode, um die letzteren. Oder genauer gesagt: Wie ist es mehr "berechenbare und flexible"?

InformationsquelleAutor nmiller | 2009-01-15
Schreibe einen Kommentar