指针\动态二维数组空间

简介: 指针\动态二维数组空间

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;
}

最后一定要记得释放空间

目录
相关文章
|
1月前
|
存储 Go iOS开发
掌握Go语言:探索Go语言指针,解锁高效内存操作与动态数据结构的奥秘(19)
掌握Go语言:探索Go语言指针,解锁高效内存操作与动态数据结构的奥秘(19)
|
1月前
|
C语言
C语言---二维数组&&指针
C语言---二维数组&&指针
17 0
|
9天前
指针\分配动态空间-筛选法求质数
指针\分配动态空间-筛选法求质数
16 5
|
7天前
|
C语言
C语言----关于二维数组传参的本质相关的知识点(数组指针、指针数组)
C语言----关于二维数组传参的本质相关的知识点(数组指针、指针数组)
|
7天前
|
C语言
C语言----指针模拟二维数组
C语言----指针模拟二维数组
|
30天前
|
存储 算法 C语言
C语言指针与二维数组在函数参数传递和动态内存管理中的应用
C语言指针与二维数组在函数参数传递和动态内存管理中的应用
22 0
|
1月前
指针的基础应用(数组的颠倒和排序,二维数组的表示)
指针的基础应用(数组的颠倒和排序,二维数组的表示)
18 0
|
1月前
|
C语言 定位技术 存储
【C语言基础入门】二级指针、一维数组与指针、二维数组与指针
【C语言基础入门】二级指针、一维数组与指针、二维数组与指针
106 0
【C语言基础入门】二级指针、一维数组与指针、二维数组与指针
|
1月前
|
存储 并行计算 C++
指针详解(二级指针、指针数组和数组指针、字符指针、二维数组传参、函数指针变量)(二)
指针详解(二级指针、指针数组和数组指针、字符指针、二维数组传参、函数指针变量)(二)