zoukankan      html  css  js  c++  java
  • [C语言] 数据结构-预备知识动态内存分配

    动态内存分配

        静态内存分配数组 int a[5]={1,2,3,4,5}

        动态内存分配数组

            int len=5;

            int *parr=(int *)malloc(sizeof(int) * len);

            1.分配了 4*5 =20个字节的内存空间,返回了第一个字节的地址

            2.第一个字节的地址无意义,所以强制转成int类型的地址int *

            3.parr此时指向第一个字节的地址,相当于a,当成普通数组使用

              *parr=4 <===> a[0]=4

              parr[1] <===> a[1]

            4.释放内存

            free(parr) parr所代表的动态分配的20个字节内存释放

    #include <stdio.h>
    #include <malloc.h>
    int main(void){
    
            printf("%s
    ","请输入数组长度");
            int len;
            scanf("%d",&len);
            //动态分配内存
            int * parr=(int *)malloc(sizeof(int)*len);
            int i;
            for(i=0;i<len;i++){
                    printf("元素:");
                    scanf("%d",&parr[i]);//另一种方式,*(parr+i)
            }
            for(i=0;i<len;i++){
                    printf("%d
    ",parr[i]);//当成普通数组使用
            }
            //释放内存
            free(parr);
    }
  • 相关阅读:
    java 接口中的成员变量与方法
    Spring BeanPostProcessor
    MySQL更改命令行默认分隔符
    java 动态代理
    《剑指offer》:[62]序列化二叉树
    group by语法
    Mysql两种引擎
    线程池大小设置
    Synchronized及其实现原理
    CAS ABA问题
  • 原文地址:https://www.cnblogs.com/taoshihan/p/8365518.html
Copyright © 2011-2022 走看看