指针\动态二维数组空间

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

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

最后一定要记得释放空间

目录
相关文章
|
7月前
|
存储 Go iOS开发
掌握Go语言:探索Go语言指针,解锁高效内存操作与动态数据结构的奥秘(19)
掌握Go语言:探索Go语言指针,解锁高效内存操作与动态数据结构的奥秘(19)
|
7月前
|
C语言
C语言---二维数组&&指针
C语言---二维数组&&指针
37 0
|
2月前
|
存储
如何使用指针数组来实现动态二维数组
指针数组可以用来实现动态二维数组。首先,定义一个指向指针的指针变量,并使用 `malloc` 为它分配内存,然后为每个子数组分配内存。通过这种方式,可以灵活地创建和管理不同大小的二维数组。
|
2月前
|
存储
如何通过指针数组来实现二维数组?
介绍了二维数组和指针数组的概念及其区别,详细讲解了如何使用指针数组模拟二维数组,包括定义与分配内存、访问和赋值元素、以及正确释放内存的步骤,适用于需要动态处理二维数据的场景。
|
3月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
146 4
|
6月前
指针\分配动态空间-筛选法求质数
指针\分配动态空间-筛选法求质数
41 5
|
6月前
|
C语言
C语言----关于二维数组传参的本质相关的知识点(数组指针、指针数组)
C语言----关于二维数组传参的本质相关的知识点(数组指针、指针数组)
|
6月前
|
C语言
C语言----指针模拟二维数组
C语言----指针模拟二维数组
|
7月前
|
存储 算法 C语言
C语言指针与二维数组在函数参数传递和动态内存管理中的应用
C语言指针与二维数组在函数参数传递和动态内存管理中的应用
70 0
|
7月前
指针的基础应用(数组的颠倒和排序,二维数组的表示)
指针的基础应用(数组的颠倒和排序,二维数组的表示)
39 0