C Dynamic Array - Efficient and Flexible Data Storage
Dynamic array (also known as resizable array) is a data structure that allows adding or removing elements at runtime. It is an array with a variable length that can be dynamically adjusted to accommodate new elements.
In C, dynamic arrays can be implemented using pointers and memory allocation functions such as `malloc`, `calloc`, `realloc`, and `free`. Here's an example of how to create and use a dynamic array in C:
c
#include
#include
int main() {
int* dynamicArray; // Declare a pointer to int to represent the dynamic array
int size = 5; // Initial size of the array
// Allocate memory for the dynamic array
dynamicArray = (int*)malloc(size * sizeof(int));
// Check if memory allocation was successful
if (dynamicArray == NULL) {
printf("Failed to allocate memory for the dynamic array.");
return 1;
}
// Initialize the array with some values
for (int i = 0; i < size; i++) {
dynamicArray[i] = i + 1;
}
// Print the content of the dynamic array
for (int i = 0; i < size; i++) {
printf("%d ", dynamicArray[i]);
}
printf("\n");
// Increase the size of the dynamic array
size *= 2;
dynamicArray = (int*)realloc(dynamicArray, size * sizeof(int));
// Check if memory reallocation was successful
if (dynamicArray == NULL) {
printf("Failed to reallocate memory for the dynamic array.");
return 1;
}
// Add more elements to the array
for (int i = size / 2; i < size; i++) {
dynamicArray[i] = i + 1;
}
// Print the content of the dynamic array after reallocation
for (int i = 0; i < size; i++) {
printf("%d ", dynamicArray[i]);
}
printf("\n");
// Deallocate the memory used by the dynamic array
free(dynamicArray);
return 0;
}
In this example, we start by declaring a pointer to an integer called `dynamicArray`. We then use `malloc` to dynamically allocate memory for the array with an initial size of 5. We check if the memory allocation was successful, and if not, we print an error message and exit the program.
Next, we initialize the array with some values and print its content. After that, we increase the size of the array by doubling it using `realloc`. Again, we check if the memory reallocation was successful, and if not, we print an error message and exit the program.
Finally, we add more elements to the array and print its content again. And lastly, we free the memory used by the dynamic array using `free`.
Dynamic arrays are useful when you don't know the size of the array in advance or when you need to dynamically resize the array during runtime. They provide flexibility in managing memory and can be used in various applications.