一、生成动态数组
有时候我们无法确定我们所需数组空间大小,这时候,我们可以使用
malloc函数。
malloc函数的使用格式一般为
int len;
int * L = (int*)malloc(sizeof(int) * len); //len生成的数组长度,
memset(L, 0, sizeof(int) * len); //赋0初始化
free(L);
此时L就是一个为int类型的,可以容纳len个元素的动态数组
注:malloc是按字节数生成的空间大小,不是按照数组长度;动态数组最后要free掉,这点和new生成后要delete的道理一致
二、动态改变数组大小
我们有遇到过这种情况,删除数组的某个元素,然后再打印出数组,会发现删除元素后,数组长度并没有改变,所删除的元素对应的位置是置null,打印出来后的结果为0,假如我们想让这个数组长度随着元素的删减而变化,粗暴的方法就是用一个新的数组去取代旧数组,但是其实使用realloc函数会更方便
realloc函数的使用格式一般为
realloc(L, sizeof(int) * (len - delnum)); //delnum,被删除的个数
注:对空间大小的改变同malloc,要使用字节数划定;是从最后一个元素删起,因此需要我们写一个取代算法,即
int m = delpoint; //删除元素的序号
while(m < len)
{
L[m] = L[m + 1]; //后取代前
m = m + 1;
}
realloc(L, sizeof(int) * (len - delnum));