一、静态数组

静态数组的长度是预先定义好的,在整个程序中,一旦给定大小后就无法改变。

静态数组在内存中位于栈区,是在定义时就已经在栈上分配了固定大小,在运行时这个大小不能改变,在函数执行完以后,系统自动销毁;

如:int a[10];

虽然c语言规定,只有静态存储的数组才能初始化,但一般的c编译系统都允许对动态存储的数组赋初值。静态存储的数组如果没有初始化,系统自动给所有的数组元素赋0。《c语言编程设计》p151

二、动态数组

动态数组的长度不是固定的,可以改变,动态数组的内存空间是从堆动态分配的。是通过执行代码而为其分配存储空间。当程序执行到我们编写的分配语句时,才为其分配。使用完必须由程序员自己释放,否则将会引起内存泄露。

创建动态数组要遵循一个原则:从外层往里层,逐层创建;而释放的时候从里层往外层,逐层释放。

1、创建方式

(1)使用malloc函数

所需头文件

         stdlib.h

如:

int *p;
     p=(int *)malloc(n*sizeof(int))

     int n;int *p;scanf("%d",n);p=(int *)malloc(n*sizeof(int))

(2)使用calloc函数

int n1;int *array;printf("请输入一维数组的长度:");scanf("%d",&n1);array=(int *)calloc(n1,sizeof(int));

2、释放内存

使用void free (void* ptr)函数释放动态地址空间

free(arry);

使用完动态数组以后应释放地址空间,以免占用。

C语言:静态数组动态数组相关推荐

  1. C语言编程输入动态数组,C语言完美实现动态数组代码分享

    我们知道,C语言中的数组大小是固定的,定义的时候必须要给一个常量值,不能是变量. 这带来了很大的不便,如果数组过小,不能容下所有数组,如果过大,浪费资源. 请实现一个简单的动态数组,能够随时改变大小, ...

  2. c语言中栈区运用原理形象图,C语言实现使用动态数组来构造栈结构

    我在面前一篇博客<C语言实现使用静态数组来构造栈结构>中使用了静态数组来模拟栈的操作.静态数组的大小是在代码中写死的.是存储在用户栈上面的,使用起来不灵活.在这篇博客中我会使用动态数组来构 ...

  3. C语言如何实现动态数组?

    提出问题 请问在c语言里如何实现动态大小的数组啊,比如说int a[N];,这里N的值可以在程序中定,或者有什么方法可以实现类似的功能?总之只要在编译时不用制定数组大小就行. 分析问题 嵌入式系统的内 ...

  4. Delphi 指针, 静态数组, 动态数组

    https://www.cnblogs.com/shangdawei/archive/2013/04/30/3051656.html指针 : 指针是一个特殊的变量, 它里面存储的数值被解释成为内存里的 ...

  5. c语言2维动态数组的创建,如何创建一个动态2维数组?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include void **darray_new(int row,int col,int size_t){ voi ...

  6. c语言怎样输入动态数组代码,求助~~ 如何把数组变成动态输入的?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 代码在这里 #include #include #include int card[6][20]; int pass_word(int num)//判断输 ...

  7. c语言2维动态数组,如何创建一个动态2维数组?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include void **darray_new(int row,int col,int size_t){ voi ...

  8. C语言中动态数组的作用,C语言实现动态数组

    前言 在纯C语言编程中,数组的创建必须是固定的大小,因为C语言本身没有提供动态数组这种数据结构,这是一个让习惯了使用高级语言编程的人转做C开发面临的一个很头疼的问题,本篇文章就将介绍如何使用纯C语言编 ...

  9. c语言 头文件定义数组,C语言动态数组

    动态数组是指在声明时没有确定数组大小的数组,即忽略方括号中的下标:当要用它时,可随时用ReDim语句(C语言中用malloc语句)重新指出数组的大小. 中文名 C语言动态数组 释    义 相对于静态 ...

最新文章

  1. 最年轻和最年长新院士:一个是数学神童 一个曾是氮肥厂工人
  2. 蓝桥杯C++ AB组辅导课 第六讲 双指针、BFS与图论 Acwing
  3. 欢迎访问github地址,并指出项目中的缺陷和BUG
  4. 从包中构建瓦片服务器
  5. 数据库实践丨MySQL多表join分析
  6. eclipse导入wsdl文件_IntelliJ IDEA的学习笔记(三、eclipse项目怎么导入idea中)
  7. PSIM软件学习---06 元件参数文件应用
  8. xlua的hotfixManager
  9. 微信分享#后面被截断,导致安卓分享失效
  10. python智慧树判断题_智慧树_大数据分析的python基础_判断题答案
  11. linux开源视频监控软件,Linux开源智能视频监控软件zoneminder的安装
  12. c语言setw,在C++中,setw(int n)
  13. TTL与CMOS电路小结
  14. 联想微型计算机改win76,联想ideacentre一体机改win7详细教程
  15. app版本控制的几种方式
  16. 十行以内,你写过哪些比较酷的 Matlab 代码?
  17. 想自学编程,先学什么好?给你三个建议,自己斟酌
  18. python怎么写游戏脚本_用PYTHON做一个简单的游戏脚本(基础,详细)
  19. python简单入门深学难_[零基础学Python]再深点,更懂list
  20. 从玩法、叙事、主题三个角度浅要谈谈《死亡搁浅》的好与坏

热门文章

  1. oracle-创建表空间、用户及授权
  2. Windows编程01_应用程序分类,开发工具和库,第一个Windows程序,字符编码
  3. 使用vue做一个“淘宝“项目——3
  4. 使用 Chrome 浏览器插件 Web Scraper 10分钟轻松实现网页数据的爬取
  5. Primavera P6 导入计划xer异常
  6. web渗透测测试(sqlmap)
  7. 计算机学习(二)易经与计算机
  8. 鱼眼图像转换为全景图像_使用A框架创建3D全景图像
  9. 复数类 class complex
  10. RESS南方不动产权籍调查测绘软件,助力房地一体化测量(RESS V20)