malloc和calloc的区别:
1. malloc只有一个参数/calloc有两个参数
2. malloc初始化时都为随机值,所以速度会快一些
calloc初始化时会把所有元素赋值为0,所以申请的空间越大,速度越慢
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
//初始化
int i,j,row,col;
int **arr; //二级指针变量
//输入矩阵的行列数
do{
printf("请输入函数行列数:(逗号隔开)");
scanf("%d,%d",&row,&col);
}while(row<=0 && col<=0);
//分配动态空间
//分配第一维空间
arr=(int**)malloc(row*sizeof(int));
//如果没必要初始化为0的话,尽量用malloc,快一点;注意格式
//分配第二维空间
for(i=0;i<row;i++)
arr[i]=(int*)malloc(col*sizeof(int));
//赋值
srand(time(0));
for(i=0;i<row;i++)
for(j=0;j<col;j++)
arr[i][j]=rand()%100;
//以矩阵形式输出
printf("\n矩阵为:\n");
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
printf("%d\t",arr[i][j]);
printf("\n");
}
//释放数组空间——自下而上
for(i=0;i<row;i++) //先通过循环把底层的空间释放
free(arr[i]);
free(arr); //然后把一维指针数组空间释放
system("pause");
return 0;
}
最后一定要记得释放空间