数组的定义:
数组A为n(n>0)个元素的有穷序列,记作
A =(a1,…,an)
ai(1≤i≤n)或者全部为相同数据类型的原子项ei(即,具体数值);或者全部为具有相同定义的数组Bi。
数组A =(a1,…,an)的维度(Dim)递归定义为:

数组在定义时只需要给出每个维度的长度或者范围即可。
在C语言中,定义N维数组除了要给出数据类型和数组名,还要依次给出数组每一位的长度L1,L2直到Ln。其中,L1为第一维的长度。

例子如下:



数组的顺序存储:
由于数组中各元素定义完全相同,将数组元素保存到内存中时,首选顺序存储。
但由于多维数组数据元素之间是复杂的多维关系,需要解决多维数据空间到一维数据空间的映射问题。
核心问题:数组元素多维结构到一维内存空间的映射
数组A = (a1,…,an)顺序存储方案的递归定义:
递归基础:ai为原子项ei

递归条件:ai为数组Bi

例子如下:

数组的基本操作:

操作特点:
以数组元素的读取和写入为主;
一般不在数组中插入和删除数据元素;
支持使用下标(元素在各位数组中的位置序号)对数组元素进行随机访问。
数组的随机访问——低下标优先
若知道a1的地址,每个原子项为size字节,则an的地址为:
Loc(an) = Loc(a1)+(n-1)✖size(一维数组)
Loc(an,m) = Loc(a1,1)+(n-1)✖size+(m-1)✖size(二维数组)
例子如下:

知识总结:
数组特点:
数据元素亦为相同结构数组;
数据元素宏观为线性关系。
顺序存储方案:
可表达数组的递归结构,并体现数据元素之间的关系;
实现了数据元素多维关系到一维内存的映射;
通过下标可以随机访问数组元素。

C语言数据结构——数组的定义与顺序存储相关推荐

  1. c语言向自定数组_C语言一维数组的定义和引用

    C语言一维数组的定义和引用 C语言支持一维数组和多维数组.如果一个数组的所有元素都不是数组,那么该数组称为一维数组. 一维数组的定义方式 在C语言中使用数组必须先进行定义.一维数组的定义方式为: 类型 ...

  2. c语言中的一维数组的定义,C语言一维数组的定义和引用

    <C语言一维数组的定义和引用>由会员分享,可在线阅读,更多相关<C语言一维数组的定义和引用(5页珍藏版)>请在人人文库网上搜索. 1.C语言一维数组的定义和引用在程序设计中,为 ...

  3. c语言如何定义比较大的数组_C语言:数据结构-数组的定义、逻辑结构和特点

    一维数组 (1)定义 一维数组是属于同一种数据类型的元素(变量)的有限序列,其元素称为数组元素,每个元素有统一的名称(数组名),有按序编号的唯一的下标.序列中元素的个数称为数组的长度. 例:a=a0, ...

  4. C语言字符数组的定义与初始化

    1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ','h','a','p','p','y ...

  5. C 语言字符数组的定义与初始化

    点击打开链接 1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ','h','a','p' ...

  6. c语言中数组的定义与应用

    定义方法: 类型  变量名[元素个数]: 比如: int  a[6]; char b[24]; double c[3]; 注意,c语言中数组的元素个数是不能动态定义的(修改:在c99中已经可以了) 也 ...

  7. c语言变量定义数组,C语言中数组的定义和使用

    一.1.一维数组的定义: 类型说明符 数组名[常量表达式];    注意:常量表达式包括常量与符号常量,不能包含变量. 2.一维数组的引用: 数组名[下标]; 3.一维数组的初始化: a.在定义数组时 ...

  8. C语言一维数组的定义与常见用法

    一维数组的定义与初始化 一维数组指的是只有一个下标的数组,它用来表示一组具有相同类型的数据.在C语言中,一维数组的定义方式如下所示 类型说明符 数组名[常量表达式]; 在上述语法格式中,类型说明符表示 ...

  9. c语言的一维数组的定义,C语言一维数组的定义

    Peterson算法(解决临界区问题)详解 本节说明一个经典的基于软件的临界区问题的解决方案,称为Peterson算法. Peterson算法提供了解决临界区问题的一个很好的算法,并能说明满足互斥.进 ...

  10. C语言-字符数组的定义-字符串的输入与输出

    定义字符数组: #define STR_LEN 80 char str[STR_LEN+1];//多留一个单位 定义字符数组的时候,要保证数组的长度要比字符串的长度多一个长度,因为C语言规定:字符串都 ...

最新文章

  1. aws 认证_引入#AWSCertified挑战:您的第一个AWS认证之路
  2. 全球第二大浏览器升级!内存/CPU占用暴降
  3. 计算机基础知识与基本操作文档,计算机基础知识与基本操作——图文混排课件...
  4. JDK工具jstatd用法详解(转)
  5. python系列(三)python列表详解
  6. leetcode109. 有序链表转换二叉搜索树
  7. 关于a标签不能调用js方法的小细节,你注意到了么?
  8. media player的显示模式 winform
  9. jQuery 2.0.3 - 整体架构
  10. 初学者python笔记(类的装饰器、property方法、元类)
  11. redisson的锁的类型_再有人问你分布式锁是什么,就把这个丢给他!
  12. Atitit 学校工作手册attilax艾提拉总结 目录 1. 团队文化 宗旨 与使命 2 1.1. 学术教育vs 技术教育vs 技能职业教育 2 1.2. 天堂模式vs地狱模式 2 2. 组织结构
  13. 计算机无法删除ie,Win7系统IE11 IE10 IE9强制卸载工具方法(解决IE无法卸载)
  14. 《互联网的那些事之时代》第三回:滟滟随波千万里,何处春江无月明
  15. unity3d计算两点之间距离的方法
  16. html font设置字号,html font标签怎么设置字体大小
  17. 四火的唠叨51CTO访谈--有关面试
  18. arcgis,裁剪投影不一致的矢量和栅格
  19. 如何做好软件系统的需求调研,七种武器让你轻松搞定
  20. 为什么程序员适合做自由职业者

热门文章

  1. 自定义scrollview右侧的滑动条
  2. ajax实例详解(2)
  3. EPM240T100的Pin
  4. 关于AE中出现 “对 COM 组件的调用返回了错误 HRESULT E_FAIL” 错误
  5. C# 2.0中泛型编程初级入门
  6. centos7建站php_Centos7PHP环境搭建
  7. CVPR2019| CVPR论文
  8. 从Gradient Descent 到 Stochastic Gradient Descent(SGD)
  9. 内核sk_buff工作线程总结
  10. 浅谈Redis基本数据类型底层编码(含C源码)