- calloc申请的堆区内存空间是经过初始化的,全部初始化为 0;
- malloc申请的堆区内存空间是未经初始化的。
- calloc适合为数组申请大小,参数接收两个,第一个为数组元素的数量,第二个为数组元素大小;
例程:malloc和calloc都可以实现
1 #include <stdio.h> 2 #include <malloc.h> 3 4 int main() { 5 int i, n; 6 scanf("%d", &n); 7 8 //int *arr = (int *) malloc(n*sizeof(int)); 9 //calloc为两个参数 10 int *arr = (int *) calloc(n,sizeof(int)); 11 12 // 以下代码对一个数组第一位进行了赋值 13 arr[0] = 1; 14 15 // 以下代码对长度为 n 的数组第二位开始做计算,并输出最后一个值的结果 16 for(i = 1; i < n; i++) { 17 arr[i] = arr[i - 1] + i; 18 } 19 printf("%d\n", arr[n - 1]); 20 return 0; 21 }