C语言数据结构——数组的定义与顺序存储
数组的定义:
数组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语言数据结构——数组的定义与顺序存储相关推荐
- c语言向自定数组_C语言一维数组的定义和引用
C语言一维数组的定义和引用 C语言支持一维数组和多维数组.如果一个数组的所有元素都不是数组,那么该数组称为一维数组. 一维数组的定义方式 在C语言中使用数组必须先进行定义.一维数组的定义方式为: 类型 ...
- c语言中的一维数组的定义,C语言一维数组的定义和引用
<C语言一维数组的定义和引用>由会员分享,可在线阅读,更多相关<C语言一维数组的定义和引用(5页珍藏版)>请在人人文库网上搜索. 1.C语言一维数组的定义和引用在程序设计中,为 ...
- c语言如何定义比较大的数组_C语言:数据结构-数组的定义、逻辑结构和特点
一维数组 (1)定义 一维数组是属于同一种数据类型的元素(变量)的有限序列,其元素称为数组元素,每个元素有统一的名称(数组名),有按序编号的唯一的下标.序列中元素的个数称为数组的长度. 例:a=a0, ...
- C语言字符数组的定义与初始化
1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ','h','a','p','p','y ...
- C 语言字符数组的定义与初始化
点击打开链接 1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ','h','a','p' ...
- c语言中数组的定义与应用
定义方法: 类型 变量名[元素个数]: 比如: int a[6]; char b[24]; double c[3]; 注意,c语言中数组的元素个数是不能动态定义的(修改:在c99中已经可以了) 也 ...
- c语言变量定义数组,C语言中数组的定义和使用
一.1.一维数组的定义: 类型说明符 数组名[常量表达式]; 注意:常量表达式包括常量与符号常量,不能包含变量. 2.一维数组的引用: 数组名[下标]; 3.一维数组的初始化: a.在定义数组时 ...
- C语言一维数组的定义与常见用法
一维数组的定义与初始化 一维数组指的是只有一个下标的数组,它用来表示一组具有相同类型的数据.在C语言中,一维数组的定义方式如下所示 类型说明符 数组名[常量表达式]; 在上述语法格式中,类型说明符表示 ...
- c语言的一维数组的定义,C语言一维数组的定义
Peterson算法(解决临界区问题)详解 本节说明一个经典的基于软件的临界区问题的解决方案,称为Peterson算法. Peterson算法提供了解决临界区问题的一个很好的算法,并能说明满足互斥.进 ...
- C语言-字符数组的定义-字符串的输入与输出
定义字符数组: #define STR_LEN 80 char str[STR_LEN+1];//多留一个单位 定义字符数组的时候,要保证数组的长度要比字符串的长度多一个长度,因为C语言规定:字符串都 ...
最新文章
- aws 认证_引入#AWSCertified挑战:您的第一个AWS认证之路
- 全球第二大浏览器升级!内存/CPU占用暴降
- 计算机基础知识与基本操作文档,计算机基础知识与基本操作——图文混排课件...
- JDK工具jstatd用法详解(转)
- python系列(三)python列表详解
- leetcode109. 有序链表转换二叉搜索树
- 关于a标签不能调用js方法的小细节,你注意到了么?
- media player的显示模式 winform
- jQuery 2.0.3 - 整体架构
- 初学者python笔记(类的装饰器、property方法、元类)
- redisson的锁的类型_再有人问你分布式锁是什么,就把这个丢给他!
- Atitit 学校工作手册attilax艾提拉总结 目录 1. 团队文化 宗旨 与使命	2 1.1. 学术教育vs 技术教育vs 技能职业教育	2 1.2. 天堂模式vs地狱模式	2 2. 组织结构
- 计算机无法删除ie,Win7系统IE11 IE10 IE9强制卸载工具方法(解决IE无法卸载)
- 《互联网的那些事之时代》第三回:滟滟随波千万里,何处春江无月明
- unity3d计算两点之间距离的方法
- html font设置字号,html font标签怎么设置字体大小
- 四火的唠叨51CTO访谈--有关面试
- arcgis,裁剪投影不一致的矢量和栅格
- 如何做好软件系统的需求调研,七种武器让你轻松搞定
- 为什么程序员适合做自由职业者
热门文章
- 自定义scrollview右侧的滑动条
- ajax实例详解(2)
- EPM240T100的Pin
- 关于AE中出现 “对 COM 组件的调用返回了错误 HRESULT E_FAIL” 错误
- C# 2.0中泛型编程初级入门
- centos7建站php_Centos7PHP环境搭建
- CVPR2019| CVPR论文
- 从Gradient Descent 到 Stochastic Gradient Descent(SGD)
- 内核sk_buff工作线程总结
- 浅谈Redis基本数据类型底层编码(含C源码)