1. 为什么需要动态内存分配?
  2. 1.动态内存很好的解决了传统数组的缺陷
  3. 2.传统数组也叫做静态的数组
  4. 动态构造一维数组的方法一:
  5. #include <stdio.h>
  6. #include <malloc.h>
  7. int main(void)
  8. {
  9. //静态的
  10. int a[5] = {1,2,3,4,5};  // *a[0]   ==a
  11. //  printf("%d\n",a[2]);
  12. int len = 5;
  13. //动态数组
  14. int *p = (int *)malloc(sizeof(int) *len);
  15. int i = 0;
  16. for(i=0;i<len;i++)
  17. {
  18. scanf("%d",p+i);
  19. }
  20. printf("输出后的结果:\n");
  21. for(i=0;i<len;i++)
  22. {
  23. printf("%d,",*(p+i));
  24. }
  25. free(p);
  26. return 0;
  27. }
  28. 方法二:
  29. #include <stdio.h>
  30. #include <malloc.h>
  31. int main(void)
  32. {
  33. int len = 6;
  34. int *p  =(int *) malloc(sizeof(int)*len);  //一维数组。
  35. int i = 0;
  36. for(i=0;i<len;i++)
  37. {
  38. scanf("%d",&p[i]);
  39. }
  40. for(i=0;i<len;i++)
  41. {
  42. printf("%d,",p[i]);
  43. }
  44. free(p);
  45. return 0;
  46. }
  47. 动态内存和静态内存的比较:
  48. 静态内存是由系统自动分配的,由系统自动释放.
  49. 静态内存存储在栈内存中
  50. 动态内存是由程序员自动分配的,手动释放
  51. 动态内存是堆分配的。
  52. 多重指针的区别:
  53. #include <stdio.h>
  54. void show(int ***q)
  55. {
  56. ***q = 22;
  57. }
  58. int main(void)
  59. {
  60. int i  = 10;
  61. int *a = &i;//把i变量的地址存储在指针变量a中
  62. int **b = &a;  // 把a的内存地址存储在b指针中.但是呢. 因为a是*a类型的.所以我们在保存的时候要写成**b
  63. //意思: 指针的指针
  64. show(&b);
  65. printf("%d\n",i);
  66. return 0;
  67. }
  68. /*
  69. 多重指针区别:
  70. 我可以通过b来直接修改i的值吗
  71. */

转载于:https://blog.51cto.com/wangweihao/895783

day17 - 动态内存的分配初步理解相关推荐

  1. 结构体的使用和动态内存的分配及释放

    结构体 什么是结构体?结构体是用户根据实际需要自己定义的复合数据类型.结构体的出现是为了表示一些复杂的数据,而普通的数据类型无法满足要求. 结构体的定义: struct Student //struc ...

  2. 动态内存的分配与释放

    1.new与delete运算 c++提供了两个中重要的运算符:new和delete.由于他们是运算符不是函数,因此执行效率更高. 运算符 功能 目 结合性 用法 new[] 动态分配 单目 自右向左 ...

  3. 操作系统:动态内存分区分配算法实现(C++)

    一.设计目标 使用 C++编程实现动态分区分配存储管理,解决存储分配时多道程序之间如何共享主存的存储空间的问题. 二.算法原理 1.首次适应算法 将空闲分区链以地址递增的顺序连接;在进行内存分配时,从 ...

  4. Linux中动态内存的分配与回收(heap, buddy system, stab)

    1.malloc 和free的原理(http://m.blog.csdn.net/article/details?id=39496057) 从操作系统角度来看,进程分配内存有两种方式,分别由两个系统调 ...

  5. 动态内存的分配用法和构造动态一维数组

    int * pArr;  pArr = (int *)malloc(4 * length); 相当于 构造了这样一个数组   int pArr[length]; #include <stdio. ...

  6. 比大小,人类智慧天花板,任意类型,任意个数。内容包含函数模板的创建,类的创建,动态内存的分配与释放,函数调用指针的用法。牵扯多个知识点。

    比大小,看这一篇就足够,大家好,我是姜姜一名热爱C++编程的大学生,接下来我将通过代码演示如何利用C++实现任意类型,任意个数的比大小,并且找出最大的数. 由于本人比较懒,所有没写注释还请各位读者多多 ...

  7. Unix/Linux操作系统分析实验二 内存分配与回收:Linux系统下利用链表实现动态内存分配

    Unix/Linux操作系统分析实验一 进程控制与进程互斥 Unix/Linux操作系统分析实验三 文件操作算法: 实现在/proc目录下添加文件 Unix/Linux操作系统分析实验四 设备驱动: ...

  8. C语言 :学习动态内存分配

    文章目录 C语言动态分配 为什么存在内存分配? 动态内存函数的介绍 `malloc` `free` `free`函数的**作用原理**是: 使用后将指针赋为`NULL` `calloc` 运用一次`c ...

  9. 关于C++的动态内存分配

    为什么要使用动态内存分配? 比较常见的情况是当我们使用一个数组时,我们需要去声明它,同时我们还需要提供给它一个编译时常量用于指定数组的长度.但是,我们有时候需要的数组并不是定长的.例如,我们要存储一个 ...

最新文章

  1. 分享Kali Linux 2017年第29周镜像文件
  2. JVM系列之:JIT中的Virtual Call接口
  3. android 结束if循环_(第五讲)if 分支语句和 while 循环
  4. SQL 查找是否存在,别再 count 了,很耗费时间的!
  5. Kubernetes Ingress入门指南和实践练习
  6. HBase 源码解析
  7. 《游戏设计艺术(第二版)》读书笔记
  8. java 电子签章_PDF开发+电子签章,如何实现真正地脱离硬件的无纸化办公体验(实战篇)?...
  9. 制定目标时需要遵循的SMART原则
  10. 工作-一个依赖依赖的依赖导致的血案
  11. uni-app实现扫码功能
  12. OpenDrive格式地图数据解析
  13. 【monkey】monkey测试入门
  14. 10.2.0.1到12.2.0.1数据库迁移expdp+dblink导入失败
  15. MSP430单片机各种寄存器总结(2)——UCS
  16. 手机终于找到一个好的输入法了,那就是A4输入法触摸屏版
  17. Ruby语言介绍(一)——Ruby风格指南
  18. joomla模板开发
  19. 求10的7次方阶乘的位数
  20. php模拟微信公众号服务器,GitHub - Lin07ux/wechat-third-server: 使用 ThinkPHP、Vue 搭建一个带有后台的微信公众号第三方服务器的基础模板...

热门文章

  1. PHP explode() 函数
  2. HDU2015 偶数求和
  3. 使用Flask_SQLAlchemy连接多个数据库
  4. chart 模板 - 每天5分钟玩转 Docker 容器技术(165)
  5. Python基础-socket编程
  6. Razor @Html.Raw()的作用
  7. int ,long , long long类型的范围
  8. IOS开发-地图 (mapkit)实验
  9. C#调用Oracle存储过程分页
  10. SpringCloud Config简介