静态就是直接分配一块固定大小的空间,不可改动
动态 malloc
#include <stdio.h>
#include <stdlib.h>
#define InitSize 10
typedef struct SqList {
int *data;//静态的,不能改变
int length;//当前长度
int Maxsize;//最大长度
};
void InitList(SqList& L)//初始化
{
L.data = (int *)malloc(sizeof(int)*InitSize);//分配内存空间
L.length = 0;//初始长度为0
L.Maxsize = InitSize;
}
void IncreaseSize(SqList &L,int len)//增加长度
{
int* p = L.data;//定义一个叫p的指针,让它指向data的第一个数据
//此处data指向了新的空间的第一个元素
L.data = (int*)malloc((L. Maxsize + 10) * sizeof(int));//让最大长度继续增加
for (int i = 0; i < L.length; i++)
{
L.data[i] = p[i];//把之前p指向的给了新的data(此时data已经是新空间的第一个
}
L.Maxsize = L.Maxsize + len;
free(p);
}
int main()
{
SqList L;
InitList(L);
IncreaseSize(L, 20);
return 0;
}