数组:
数组:是一种容器,可以用来存储同种类数据类型的多个值
数组的本质是地址
数组的定义:数据类型 数组名[长度 ] eg:int arr=[3];
特点1.连续的空间 特点2.一旦定义,长度不可变
数组的初始化:数据类型 数组名[长度]={数据值,数据值. . .}
长度省略:数据值的个数就是数组长度
长度未省略:①数据值的个数<=长度
(会在后面自动补充默认值:整数0;小数:0.0;字符:'\0';字符串:NULL)即表示空白
②数据值的个数>=长度 (会报错)
元素访问:获取 修改
索引:就是数组的一个编号,也叫做:角标、下标、编号
特点:从0开始的,连续+1,不间断。通过索引就可以获取或修改数据
获取 修改:
获取的格式:①变量 = 数组名[索引] 修改的格式:数组名[索引]=数据值
②printf("占位符",数组名[索引] );
数组遍历:
遍历:依次获取数组中的每一个元素
内存中的变量 数组:
内存:软件在运行时,用来临时存储数据的
内存地址:操作系统给内存每个字节安排的编号(即一个地址为 一个字节)
内存地址的规则:①32位操作系统,内存地址以32位的二进制表示 (共计2的32次方个地址/字节)=4GB
②64位操作系统,内存地址以64位的二进制表示(共计2的64次方个地址/字节)=17,179T
ps:为方便阅读会将二进制转换为十六进制
内存地址的作用:快速的操作内存中的数据
C语言中获取内存地址:先读取首地址 &--取地址运算符
数组的内存地址:是第一个元素的第一个字节空间的地址,也是首地址
首地址[索引] (索引即偏移量)
思考:
1.通过变量的首地址,就可以确定变量中存储的数据 ✕ 只能获取首字节的数据
2.为什么数组的索引是从0开始的? 因为索引为偏移量,最开始不偏移
3.数组的长度如何计算?(元素的个数) 公式:总长度/数据类型占用的字节个数
数组的常见问题
数组作为函数的参数:
ps:在C语言中,printArr函数通常用于打印数组的内容。
1.
此时函数不具有通用性
2.
数组作为函数的形参实际上传递的是数组的首地址
在定义处:arr表示的就是完整的数组;
函数中的arr:只是一个变量,用来记录数组的首地址
在函数中打印arr时没有&--取地址运算符
(%zu用于输出size_t型,通常无符号)
3、4
在64位的操作系统当中,是以64个二进制表示内存地址值
如果要在函数中对数组进行遍历的话,记得一定要把数组的长度一起传递过去
5.
此时函数才具有通用性,把数组中的每个数据遍历出来
数组的索引越界:
即访问了不存在的索引(程序不会报错),超出了数组范围,数据不可控
最小索引:0 ;最大索引:长度-1