malloc
作用:可以提前给数组分配好大小。
参数:只有一个,sizeof(类)*n,计算一共需要n个类的大小,即n个对象。
强制类型转换:malloc函数的返回类型默认为void *,所以要强制转换为指向类的指针类型。
数据初始化:malloc申请空间成功后,并不会初始化,分配到的空间中的数据都是随机数。
代码:向系统申请3个student大小的内存空间。
student *p2=(student *)malloc(sizeof(student)*3);
calloc
作用:可以提前给数组分配好大小。
参数:有两个,(sizeof(类),n) 一个类的空间大小、n是类的个数。
强制类型转换:calloc函数的返回类型默认为void *,所以要强制转换为指向类的指针类型。
数据初始化:calloc申请空间成功后,会初始化,分配到的空间中的数据都初始化为0。
代码:向系统申请3个student大小的内存空间。
student* st = (student*)calloc(sizeof(student), 3);
realloc
作用:可以动态的增加数组大小,即随时可以追加空间。
参数:有两个,(p,sizeof(类)*n) p是要改变内存大小的指针名、后面是新的大小。
强制类型转换:realloc函数的返回类型默认为void *,所以要强制转换为指向类的指针类型。
数据初始化:realloc申请空间成功后,不会初始化。
代码:追加3个空间大小。
st = (student*)realloc(st, sizeof(student)*(6));