1.深入变量的细节
- 不同的数据诶星战有不同的字节数
- 一个变量占用的字节肯定是连续的
- 内存中储存数据的基本单元是byte字节
- 一个字节有八个bite
- 相邻的两个字节的地址是连续的
- 每一个字节都有对应的十六进制地址
- 变量是内存中用于储存数据的若干字节
<1>.变量的内存分配
- 定义一个变量是在内存中分配的若干连续字节
- 变量的分配是是内存的高地址到低地址分配的
- 一个变量的值在内存中的高位对应高字节,低位对应低字节
<2>.变量的地址
- 变量的地址是组成变量的低字节的地址
- 使用&可以取出地址
- 打印地址%p 占位符
注意:程序在运行过程中不只是自定义的变量在申请和被分配到空间,系统的代码也会申请空间.这可能会造成我们在申请变量的时候么一个变量不是挨着的.但是同一个字节内的字节一定是连续的.
2.int类型的修饰符
- 作用 :制定int类型变量在内存中的字节数
short int 占2个字节 16位
最高位是符号位
short 用%d打印有的时候不能输出一个short int 数据
%hd占位符来输出
short int 中可以省略int
在32位操作系统中占4个字节
long int 在64位操作系统中占8个字节
OS X和iOS系统是64位
%ld占位符输出
声明的时候可以省略int
long long int 无论是32和64位操作系统都是8个字节
声明时可以省略
扩展:long 可以休息double变量,分配double类型16个字节
3.有符号和没有符号的修饰符
- unsigned 让最高位来参与数据表示 %u
有 %u %hu %lu %llu
- signed 和 unsigned 不可以修饰doubule
4.char 变量在内存中的存储
- 任何基本类型的存储数据的方式都是以二进制补码存起来的
- char 有符号位
- char 数据是字符的ASCII码的二进制反码存储的
- signed 和 unsigned 可以共存
5.垃圾值的产生
- 局部变量没有初始化的话会产生垃圾值
- 打开哟好执行完毕之后 变量被回收
声明变量的时候是像系统申请若干连续字节
数据不会被回收之后被覆盖
6.全局变量
- 全局变量生命是系统会自动清零
1.数组的概述
.特点
- 可以存出多个数据
- 同一个数组当中的元素类型相同意义相同个数固定
.声明
数组类型 + 数组名 (N)
- 先确定多个数据的数据类型
- 在确定这些数据的个数
.数组在内存中是如何创建的
类型: 不要忘了带数组
元素:普通类型的变量
下标.从0开始依次递增
长度:生命要存多少个元素
2.如何在数组中存储数据?
- 将值付给一个个的元素,通过下表;数字名[元素下标] = 100;
- 元素的本质是一个变量
- 当赋值时类型不一致会发生类型自动转换
- 下标不能越界,下标的取值范围,数组长度-1
- 取数据的时候也是通过下标
3.使用数组时的注意事项
- 声明数组时一定要生命长度和类型
- 长度可以是表达式,变量,或者字符也是可以的
- 长度不能是一个负数或者小数
- 长度可以是1 或者0
- 数组长度也可以是长度为正数的宏
注意:声明一个数组的时候不能复制给括号中的变量
4.数组在内存中存储形式
1)声明数组
- 在内存中从高到低地址连续申请(数组长度*元素的字节数)个字节
- 第零个元素在低字节
5.数组的地址
- 实数组中字节最低的地址也是下表为0的元素的低字节地址
- 数组名代表这个数组的地址
从值得角度看 数组名 == 数组的地址
6数组的长度
- 数组的长度 = sizeof(arr)/sizeof(arr[ 0 ])
|
|