1.对变量的理解。
变量与内存中一片存储区域相对应,变量的地址就是这片存储区域的首字节的地址。编译器将变量名和变量的内存地址对应起来。变量的值就是变量在内存中保存的数据。
2.变量的声明和定义
声明只是告诉编译器有这样一个变量。定义,将为这个变量分配存储空间,一个变量可能被声明多次,但只会被定义一次。变量的第一次赋值被称为初始化。
3.对变量的作用域的理解。
变量能够被访问的范围
<1> 代码块作用域:只能在代码块里被访问的作用域
<2> 函数原型作用域: 函数声明的变量的作用域
<3> 文件作用域:能够被整个文件访问的作用域
4.对变量的链接属性的理解。
<1> 外部链接 能够被程序中的任何文件访问的变量
<2> 内部链接: 只有本件能访问的变量
<3> 空链接:只能被代码块访问的变量
5.对变量的存储时期的理解
<1> 静态存储时期(static)
变量在程序运行期间一直存在,也就是说变量所在内存中的存储空间一直都保存着变量的值,变量的地址没有发生改变过。如具有文件作用域的变量。
<2>自动存储时期(auto)
变量在程序运行期间不是一直存在,也就是说变量所在的存储空间并不是一直都保存这变量的值,变量的所占用的空间被回收了。如具体代码块作用域的变量。
6.对变量的存储类型的理解。
根据变量的作用域、链接属性、存储时期我们可以得到变量的值的存储类型:
<1>自动变量:代码块作用域,空链接,自动存储时期,也就是说程序离开代码块后,变量的内存被回收,分配给其他变量。
<2>寄存器变量:代码块作用域,空链接,自动存储时期,变量的值保存在寄存器或者内存(没有合适的寄存器),与自动变量的区别一是没有地址,二是存储容量有限。(无法存储double,long等数据)。
<3>具有代码块作用域的静态变量:文件作用域,空链接,静态存储时期,也就是说,程序运行期间,变量一直存在,变量只是被初始化一次。
<4>具有外部链接的静态变量(外部变量或者全局变量):文件作用域,外部链接,静态存储时期,也就是说变量一直存在,可以被任何文件访问,变量只是被初始化一次
<5>具有内部链接的静态变量(静态变量):文件作用域,内部链接,静态存储时期,也就是说变量一直存在,只能被当前所在文件访问,变量只是被初始化一次。
7.对于static 关键字的理解。
static 是一个存储类说明符
对于文件作用域的变量,static 只是用来说明变量的链接属性。
对于代码块作用域的变量,static 表示变量具有静态存储时期。
8.对于extern 关键字的理解。
extern 只是一个存储类的说明符
extern 声明的变量,表示该变量在其他地方定义过,一般用来声明外部变量或者静态变量
变量与内存中一片存储区域相对应,变量的地址就是这片存储区域的首字节的地址。编译器将变量名和变量的内存地址对应起来。变量的值就是变量在内存中保存的数据。
2.变量的声明和定义
声明只是告诉编译器有这样一个变量。定义,将为这个变量分配存储空间,一个变量可能被声明多次,但只会被定义一次。变量的第一次赋值被称为初始化。
3.对变量的作用域的理解。
变量能够被访问的范围
<1> 代码块作用域:只能在代码块里被访问的作用域
<2> 函数原型作用域: 函数声明的变量的作用域
<3> 文件作用域:能够被整个文件访问的作用域
4.对变量的链接属性的理解。
<1> 外部链接 能够被程序中的任何文件访问的变量
<2> 内部链接: 只有本件能访问的变量
<3> 空链接:只能被代码块访问的变量
5.对变量的存储时期的理解
<1> 静态存储时期(static)
变量在程序运行期间一直存在,也就是说变量所在内存中的存储空间一直都保存着变量的值,变量的地址没有发生改变过。如具有文件作用域的变量。
<2>自动存储时期(auto)
变量在程序运行期间不是一直存在,也就是说变量所在的存储空间并不是一直都保存这变量的值,变量的所占用的空间被回收了。如具体代码块作用域的变量。
6.对变量的存储类型的理解。
根据变量的作用域、链接属性、存储时期我们可以得到变量的值的存储类型:
<1>自动变量:代码块作用域,空链接,自动存储时期,也就是说程序离开代码块后,变量的内存被回收,分配给其他变量。
<2>寄存器变量:代码块作用域,空链接,自动存储时期,变量的值保存在寄存器或者内存(没有合适的寄存器),与自动变量的区别一是没有地址,二是存储容量有限。(无法存储double,long等数据)。
<3>具有代码块作用域的静态变量:文件作用域,空链接,静态存储时期,也就是说,程序运行期间,变量一直存在,变量只是被初始化一次。
<4>具有外部链接的静态变量(外部变量或者全局变量):文件作用域,外部链接,静态存储时期,也就是说变量一直存在,可以被任何文件访问,变量只是被初始化一次
<5>具有内部链接的静态变量(静态变量):文件作用域,内部链接,静态存储时期,也就是说变量一直存在,只能被当前所在文件访问,变量只是被初始化一次。
7.对于static 关键字的理解。
static 是一个存储类说明符
对于文件作用域的变量,static 只是用来说明变量的链接属性。
对于代码块作用域的变量,static 表示变量具有静态存储时期。
8.对于extern 关键字的理解。
extern 只是一个存储类的说明符
extern 声明的变量,表示该变量在其他地方定义过,一般用来声明外部变量或者静态变量