c语言 动态数组的实现 源代码
时间: 2023-12-27 17:00:27 浏览: 51
动态数组是指可以根据需要动态调整大小的数组。使用C语言可以通过动态内存分配来实现动态数组。以下是一个简单的C语言动态数组的实现源代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int capacity; // 动态数组的容量
int size; // 动态数组的实际大小
int *data; // 动态数组的数据
} DynamicArray;
void initDynamicArray(DynamicArray *arr, int initialCapacity) {
arr->capacity = initialCapacity;
arr->size = 0;
arr->data = (int *)malloc(sizeof(int) * initialCapacity);
}
void resizeDynamicArray(DynamicArray *arr, int newCapacity) {
arr->data = (int *)realloc(arr->data, sizeof(int) * newCapacity);
arr->capacity = newCapacity;
}
void addElement(DynamicArray *arr, int element) {
if (arr->size >= arr->capacity) {
resizeDynamicArray(arr, arr->capacity * 2);
}
arr->data[arr->size] = element;
arr->size++;
}
int getElement(DynamicArray *arr, int index) {
if (index < 0 || index >= arr->size) {
printf("Error: Index out of range\n");
return -1;
}
return arr->data[index];
}
void freeDynamicArray(DynamicArray *arr) {
free(arr->data);
}
int main() {
DynamicArray testArray;
initDynamicArray(&testArray, 5);
addElement(&testArray, 10);
addElement(&testArray, 20);
addElement(&testArray, 30);
printf("Element at index 1: %d\n", getElement(&testArray, 1));
freeDynamicArray(&testArray);
return 0;
}
```
以上源代码通过结构体和相应的函数实现了动态数组的初始化、元素添加、元素获取、内存大小调整和内存释放等功能。在主函数中进行了简单的测试,可以看到动态数组的功能正常运行。