• 一维动态数组和二维动态数组的创建和使用


    #include<stdio.h>
    #include<malloc.h>
    void main(){


    int *a,n=10,i;
    /*
    calloc()函数的原型是:(void *)calloc(unsigned n,unsigned size)
    calloc()函数用于向系统动态申请n个,每一个占sizege字节的内存单元,函数返回值为所申请的内存空间首地址
    malloc和calloc主要差别在于,当系统的内存仅仅剩下一些很小的碎片时。用calloc函数设计的动态数组的时间效率优于
    用malloc函数设计的动态数组的时间效率
    */
    //动态申请n歌int型的的内存空间由指针a指示首地址
    a=(int *)calloc(n,sizeof(int));
    for(i=0;i<n;i++){

    a[i]=i+1;//数组元素赋值
    }


    for(i=0;i<n;i++){

    printf("%d  ",a[i]);//数组元素输出
    }


    printf(" ");
    free(a);//动态释放指针a所指向的n歌内存空间

    }







    二维动态数组的创建和使用

    #include<stdio.h>
    #include<malloc.h>




    //创建二维动态数组的函数
    int **Make2DArray(int row,int col){


    //创建row行col列的二维动态数组,函数返回其首地址
    int **a,i;
    //动态申请row个int类型的内存空间。有a指示
    a=(int **)calloc(row,sizeof(int *));
    //循环row次,动态申请col个int类型的内存空间,由a[i]指示
    for(i=0;i<row;i++){

    a[i]=(int *)calloc(col,sizeof(int));
    }


    return a;
    }






    //释放二维动态数组的函数
    void Deliver2DArray(int **a,int row){
    //释放二维动态数组a的内存空间,row为数组的行数
    int i;
    for(i=0;i<row;i++){

    free(a[i]);
    }


    free(a);
    }






    void main(){


    /*
    int *a,n=10,i;

    calloc()函数的原型是:(void *)calloc(unsigned n,unsigned size)
    calloc()函数用于向系统动态申请n个,每一个占sizege字节的内存单元,函数返回值为所申请的内存空间首地址
    malloc和calloc主要差别在于,当系统的内存仅仅剩下一些很小的碎片时,用calloc函数设计的动态数组的时间效率优于
    用malloc函数设计的动态数组的时间效率

    //动态申请n歌int型的的内存空间由指针a指示首地址
    a=(int *)calloc(n,sizeof(int));
    for(i=0;i<n;i++){

    a[i]=i+1;//数组元素赋值
    }


    for(i=0;i<n;i++){

    printf("%d  ",a[i]);//数组元素输出
    }


    printf(" ");
    free(a);//动态释放指针a所指向的n歌内存空间
    */






    //二维动态数组
    int i,j,c;
    int row=3,col=4,**a;
    a=Make2DArray(row,col);
    c=1;
    for(i=0;i<row;i++){

    for(j=0;j<col;j++){

    a[i][j]=c;//数组元素赋值
    c++;
    }
    }






    for(i=0;i<row;i++){

    for(j=0;j<col;j++){

    printf("%5d",a[i][j]);//显示数组元素
    }


    printf(" ");
    }






    Deliver2DArray(a,row);
    /*
    realloc()函数的原型是:(void *)realloc(void *p,unsigned size)
    realloc()函数的功能是。将指针p所指向的已分配内存区的大小改为size,函数返回新分配内存区
    的首地址。size既能够比原来分配的内存区大,也能够比原来分配的内存区小。
    新分配的内存区中原样保存原内存区的数据值。当新分配的内存区设为size2小于原分配的内存区size1时
    新分配内存区中原样保存原分配内存区中前size2个数据值
    */

    }
















  • 相关阅读:
    网络编程基础
    面试题
    面试题合集
    异常
    三个重要的模块loggning,hashlib,configparse
    面向对象进阶
    单例模式
    反射
    封装
    开发规范
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7094672.html
Copyright © 2020-2023  润新知