• android108 内存分配


    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>  //包含头文件 
    
    main(){
           int i = 3;//栈中 
           int arr[10];//栈中 
           int* p = malloc(sizeof(int) * 10);//p在栈中,malloc在堆里面长度为10个整型,malloc出来的内存是连续的。 
           *p = 10;
           *(p+1) = 20;
           
           printf("%#x
    ", p);//0x3e3cf0 
           printf("%d
    ", *p);//10 
           printf("%d
    ", *(p+1));//20 
           printf("%d
    ", p+1);//4078836 
           printf("%d
    ", *(p+2));//0 
           printf("%d
    ", *(p+3));//0 
           free(p);
           system("pause"); 
    }
    
    
    
    #include <stdio.h>
    #include <stdlib.h>
    
    main(){
           int i = 3;
           int* p = &i;
           int** q = &p;
           int*** l = &q;
           
           printf("i的值为%d
    ", ***l);//3 
           //l表示取出l内存空间的值,*l表示取出l内存空间值的内存空间的值,**l表示取出l内存空间值的内存空间值的内存空间的值。 
           system("pause"); 
    }
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    main(){
           printf("请输入学生人数:");
           int count;
           scanf("%d", &count);
           //int b在C中是系统在栈中申请内存,系统负责回收的。
           // malloc申请的是堆内存由程序员释放。 
           //栈内存只有2M,连续的内存空间,先进来的后释放。 堆的内存和物理内存一样大,
           //堆不连续是用链表表示的,链表查找比连续的麻烦但是增删比连续的快。 
           //C是面向过程的没有对象概念所以没有new,malloc就是new。
           //静态内存是栈上分配的,编译的时候就已经分配好了,程序的怎个运行期间都存在,
           //例如全局变量和static变量。动态内存是堆上malloc或者new分配的。 
           
           
           //根据学生人数去动态申请堆内存 , 
           int* p = malloc(sizeof(int) * count);//count个int类型 
           
           int i;
           for(i = 0; i < count; i++){
                 printf("请输入第%d个学生学号:", i);
                 scanf("%d", p+i);
           }
           
           printf("请输入新增的学生人数:");
           int newCount;
           scanf("%d", &newCount);
           p = realloc(p, sizeof(int) * (count + newCount));//扩充p内存 
           
           for(i = count; i < count + newCount; i++){
                 printf("请输入第%d个学生学号:", i);
                 scanf("%d", p+i);
           }
           
           for(i = 0; i < count + newCount; i++){
                printf("第%d个学生的学号是:%d
    ", i, *(p+i)); 
           }
           system("pause"); 
    }
  • 相关阅读:
    CF538H Summer Dichotomy
    CF1558F Strange Sort
    CF429E Points and Segments
    CF986F Oppa Funcan Style Remastered
    [JOI Open 2016] 摩天大楼
    [做题笔记] 浅谈笛卡尔树结构的应用
    CF1383C String Transformation 2
    CF1558E Down Below
    weex打包安卓艰苦之路
    IntelliJ IDEA 推荐15款插件
  • 原文地址:https://www.cnblogs.com/yaowen/p/4985285.html
Copyright © 2020-2023  润新知