存储空间是程序执行过程中通过动态存储语句分配的,一旦空间占满,就另外开辟一块更大的存储空间,用以替换原来的存储空间。
c语言调用stdlib库,使用malloc,free函数。
c++使用new,delect。
#include<stdlib.h>
#include <iostream>
#define initsize 10
using namespace std;
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 printlist(sqlist l) //打印表
{
for(int i=0;i<l.maxsize;i++)
{
cout<<"number "<<i<<" is "<<l.data[i]<<endl;
}
}
void increaselist(sqlist &l,int len) //扩展空间
{
int *p=l.data;
l.data=(int *)malloc(sizeof(int)*(l.maxsize+len));
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);
cout<<"first\n";
printlist(l);
increaselist(l,5);
cout<<"second\n";
printlist(l);
cout << "over\n";
return 0;
}