#include <stdio.h>
#include <string.h>
#define DEFAULT_SIZE 1024 // 一个page是4k
typedef struct array
{
int *pData; //指针变量,存放数组第一个元素地址。
int length; //数组当前长度(有几个元素)。
int size; //数组空间大小
}Array;
void init(Array &arr)
{
//初始化,给数组申请空间。
arr.length = 0;
arr.size = DEFAULT_SIZE;
arr.pData = new int[arr.size];
// 数组分配在栈上,内存的释放由程序自己执行
// new出来的数据,分配在堆上,大小可以是运行时确定,释放由程序员负责。
}
void destroy(Array &arr)
{
delete[] arr.pData;
arr.length = 0;
arr.size = 0;
}
void expand(Array &arr)
{
// 扩容原理:申请一段比原来更大的新空间,把数据拷贝过去。再清空旧空间的数据。
int osize = arr.size;
int *opData = arr.pData;
arr.size *= 2;
arr.pData = new int[arr.size];
// 方法一:memcpy
// memcpy拷贝的效率要比手动拷贝高
// memcpy支持任意一段内存拷贝到另外一段内存
// memcpy(arr.pData, opData, osize*sizeof(int));
// 方法二:手动自己拷贝
for
数据结构-数组代码实现(C语言)
最新推荐文章于 2023-05-22 14:35:36 发布