#include<stdlib.h> #define initSize 10//默认最大长度 typedef struct{ int *data; int maxSize;//顺序表最大容量 int length;//当前长度 }SqList; void InitList(SqList &L){ L.data=(int*)malloc(initSize*sizeof(int)); L.length=0; L.maxSize=initSize; } //增加动态数组长度 void IncreaseSize(SqList &L,int len){ int *p=L.data; L.data=(int*)malloc((L.maxSize+len)*sizeof(int)); for(int i=0;i<L.length;i++){ L.data[i]=p[i]; } L.maxSize=L.maxSize+len; free(p);//释放原来的内存空间 } int main(){ SqList L; initList(L); //.....随便插入几个元素 IncreaseSize(L,5); return 0; }#include<stdlib.h> #define initSize 10//默认最大长度 typedef struct{ int *data; int maxSize;//顺序表最大容量 int length;//当前长度 }SqList; void InitList(SqList &L){ L.data=(int*)malloc(initSize*sizeof(int)); L.length=0; L.maxSize=initSize; } //增加动态数组长度 void IncreaseSize(SqList &L,int len){ int *p=L.data; L.data=(int*)malloc((L.maxSize+len)*sizeof(int)); for(int i=0;i<L.length;i++){ L.data[i]=p[i]; } L.maxSize=L.maxSize+len; free(p);//释放原来的内存空间 } int main(){ SqList L; initList(L); //.....随便插入几个元素 IncreaseSize(L,5); return 0; }
malloc函数申请一片连续的存储空间,并返回一个指针(一整片连续空间的起始地址)赋给data
所以data指针此时指向起始位置地址
定义指针p,将data指针的值赋给p,即p指针此时也指向该连续空间的起始地址
data指针又指向新的内存空间
free(p) #