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; }
最后一定要记得释放空间