Trên thảo luận về bộ nhớ động ở đây: "Intro to C Pointers and Dynamic Memory"Mảng Variable Sized vs calloc trong C
Các trạng tác giả:
Một khối bộ nhớ như thế này hiệu quả có thể được sử dụng như một mảng linh hoạt hơn. Cách tiếp cận này thực sự phổ biến hơn trong các chương trình C trong thế giới thực. Nó cũng có thể dự đoán và linh hoạt hơn so với một "mảng kích thước biến"
Các loại khối bộ nhớ ông đang nói về là như vậy:
const int size = 5;
int * array = calloc(size, sizeof(int));
và sau đó sử dụng con trỏ khác để lặp qua mảng:
int * index = array;
for (i = 0; i < size; i++) {
*index = 1; // or whatever value
index++;
}
câu hỏi của tôi là như thế nào là phương pháp này tốt hơn so với một mảng tiêu chuẩn có kích thước biến như thế này ?:
int array[variable];
hoặc động:
char name[] = "Nick";
Tác giả không thực sự làm sáng tỏ vì sao tôi nên thích phương pháp cũ để sau này. Hay cụ thể hơn: Làm thế nào nó có thể dự đoán và linh hoạt hơn?
có thể trùng lặp của [VS. mảng malloced variable-length-array] (http://stackoverflow.com/questions/16672322/malloced-array-vs-variable-length-array) –