第八天 数组
Short 2字节 %hd
int 4 %d %i
long 8 %ld
long long 8 %lld(解决32位)
改变整形长度:
改变符号位 signed signed
原来最高位用来标识一个数的正负,现在拿来运算
计算机默认有符号位 signed
无符号用%u来输出
数组 构造类型
相同数据类型的有序集合
数组元素 可以是基本类型 构造类型
数组下标 从0开始到N-1
数组维数 一维 二维 多维
数值数组 存数值
字符数组 存字符
指针数组 存指针(地址)
结构数组 存结构体类型的数据
一维数组 所有数组元素都不是数组
定义 --->初始化 -----> 使用
注意:
1、数组长度可以是常量或者常量表达式
2、数组命名 严格遵守标识符的规范
3、数组名不可以和变量同名
4、数组的长度不可以是变量
5、数组可以宏定义
6、定义数组时可以定义普通变量
int a[5]; a[0]=1;a[2]=?;随机数(垃圾数)
数组没有初始化 里面存的是垃圾值
部分初始化 没初始化的部分被系统初始化为0
数组元素是变量
数组引用:数组名[下标]就可以访问数组的元素
数组存入数据 从首地址依次存入
数组名指向它的首地址 等于第一个元素的地址
数组中每个元素占用相同字节
数组中每个元素的地址都是相邻的
先定义的变量地址高后定义的地址低
数组内部的数据存储(先存储在低地址后存储高地址)
数组名是一个常量 存储的是这个数组的的首地址
a==&a==&a[0]
a--> 数组名 --> 指向数组的第0个元素 +1后 第一个元素的地址
&a ->数组地址->指向数组的地址 +1后 跳过这个数组的地址
数组存储的总字节==存储个数*sizeof(数组类型)==sizeof(数组名)
数组长度 总长度/数组中任何一个元素在内存中占用字节数
= sizeof(数组名)/sizeof(数组类型)
越界访问 不安全 因为空间不属于这个数组 数据可能丢失
1.形参数组的类型长度要和实参一致
2.形参数组的长度和实参的长度可以不一致 (可能输出结果不一致)
3.形参数组长度可以不写
4.数组名作为函数参数后数组的长度信息可能丢失(传递过去的是地址)
c语言中所有的地址都占8个字节
|