1.变量的本质
变量:变量就是内存中开辟的用来存储数据的那块空间.所以变量是用来存储数据的.
变量的值:存储在变量所代表的那块空间中的数据.就叫做变量的值.
变量的名称:为变量所代表的那块空间取的别名,叫做变量的名称.
变量的类型:变量所代表的那块空间的类型就叫做变量的类型.
变量的本质是:在内存中存储数据的那块空间.
2.变量的命名规则
a.变量名只能以任意的字母、下划线、$开头,不能以数字开头
b.后面只能跟任意的字母、数字、下划线还有$
c. 不能与C的关键字重名.
关键字:指的是一些英文单词在C语言之中代表特殊的意义.不能把他们作为变量的名字.
关键字在Xcode中是以特殊的颜色显示的所以你发现你的变量名字是以这个颜色显示的那就说明这是1个关键字
赶紧换.
d. C语言严格区分大小写.
如果变量名大小写不一样那么就是完全不同的变量.
e. 变量一定要先声明再使用.
f.在同1个大括弧之中,不允许定义多个变量名相同的变量.
同1个变量在同1个大括弧之中不允许重复定义.
任意1点如果不遵守,直接报语法错误.
建议:
a.变量的名字要取得有意义.别人1看变量的名字就知道这个变量中存储的是神马数据.
知名达意.
b.如果变量的名字是由多个单词组成的.第1个单词的首字母小写其他单词的首字母大写.
1个拼音算1个单词.
3.变量的使用
3.1变量的声明
要在内存中存储数据.就只需要声明1个变量.
声明1个变量.其实就是在内存中开辟了1块空间来存储数据.
声明格式:
数据类型变量名称;
3.2 变量的初始化
变量的初始化就是把变量对应的那块存储数据的空间放入一个值。
格式语法:
变量名 =数据;
3.3变量的使用
使用变量中的数据,就直接写上变量的名字就可以使用了.
3.4 变量和变量之间的赋值
变量之间的赋值原理:
将源变量的值拷贝1份.将这个副本再赋值给目标变量.
注意:
变量声明的时候可以同时初始化,也可以同时声明几个相同类型的变量。
如果变量在声明的时候,没有进项初始化也会有一个值,是垃圾值。所以声明一个变量的时候,最好给一个初始值。
同一个变量不允许重复定义.
使用变量之前,必须要保证变量已经声明了
4.局部变量和全局变量
局部变量:
定义在函数内部的变量,我们就叫做局部变量.所以我们之前学习到的变量都是局部变量.
全局变量:
定在函数外部的变量.我们就叫做全局变量.直接定义在源文件下面.
4.1异同点
相同点:都是变量,都是在内存中开辟一块空间来存储数据.
不同点:
1).声明的位置不同.局部变量声明在函数内部,而全局变量声明在函数的外面.
2).作用域不同.
a.局部变量.只能在当前函数的内部访问.
b.全局变量.从定义这个全局变量的地方开始,后面的所有的函数中都可以访问这个全局变量.
一般情况下.全局变量都是定义在最顶上的.#include下面.
3).默认值不同.
a. 局部变量.
声明1个局部变量,如果没有为这个局部变量赋初始值.那么这个局部变量中有值,值是1个垃圾数.是个随机数.
b. 全局变量.
声明1个全局变量,如果没有为这个全局变量赋初始值,那么这个全局变量的初始值默认就是0会自动初始化为0
如果全局变量的类型是char类型,并且我们也没有初始化.那么系统就会自动的这个char变量赋值1个 '\0'
'\0'代表1个不可见的字符.这个字符的ASCII码就是0
4).创建和回收的时间不同.
a. 局部变量.
CPU执行声明局部变量的那句话的时候,才会在内存中声明.
当作用域结束以后 就会自动回收.
b. 全局变量.
程序一启动就在内存中创建全局变量.
程序结束的时候,全局变量才会被回收.
5 ).可以定义1个和全局变量名称相同的局部变量.
这个时候,在函数内部从定义同名局部变量开始后面访问这个变量.访问的是局部变量.
4.2全局变量的特点
程序一启动就会创建,直到程序结束的时候才会被回收.
无论在那个函数中访问全局变量.访问的都是同1个.
具备共享性.将数据声明为全局变量.那么所有的函数都能访问,都可以共享这个数据.
4.3计算变量、常量在当前系统上内存中占用的字节数.
使用方法.
a. sizeof(数据类型) 就会返回这个数据类型的变量在内存中占据多少字节.
b. sizeof(变量名) 就会返回这个变量在内存中占据多少个字节.
c. sizeof(常量) 就会返回这个常量数据在内存中占据的字节数.
常量: 直接写1个数据.这个数据就是常量.
4.4 变量内存的回收
在大括弧执行完毕之后,定义在这个大括弧中的变量就会被系统立即回收.
声明变量的时候,其实这样的,找系统为你从高地址向低地址分配指定字节数的连续空间.
如何回收?
当变量回收的时候,其实就是告诉系统变量占用的字节不再使用了.
可以分配给别的变量了.
变量所占用的字节的数据是不会清空的.
当再声明1个变量的时候.这个新变量有可能就是刚刚被回收的那个变量占用的空间.
那么这个时候这个新变量中是有值的 值就是上次那个变量遗留下来的值 这就叫做垃圾值.
所以,我们声明1个局部变量.最好是先为其初始化为0
当将全局变量声明出来以后.系统会自动的将全局变量中的数据清零.
5变量在内存中的存储方式.
1). 不同类型的变量在内存中占据不同的字节数.
1个变量占用的字节一定是连续的.
int 4
double 8
float 4
char 1
2). 在为变量分配字节空间的时候,是从高地址向低地址分配的连续空间.
先声明的变量是在高字节. 后声明的变量是在低字节.
3). 任何数据在内存中都是以其二进制的补码存储的.
低位存储在低字节.高位存储在高字节.
4). 每1个字节在内存中都有1个地址. 十六进制数.
变量的地址:是组成这个变量的低字节的地址.
5). 使用&取地址运算符可以直接拿到变量的地址.
6). 使用%p打印地址类型的数据.