注意变量名与变量值的概念
注意静态和动态的区别,局部和全局的区别。
标识符:
用来标识变量,符号常量,函数,数组,类型等实体名字的有效字符序列号称为标识符。标识符=名字
变量名规则:
(标识符)只能由字母,数字,下划线3种字符来组成,且第一个字符必须为字母或者下划线。
定义变量:
数据类型 变量名;
常变量:
常变量又叫做只读变量。
在定义变量时,如果加上const,则变量的值在程序运行期间不能被改变。
定义常变量时必须同时对他初始化。
常变量不能被赋值。即不能出现在等号嘴边。
const a=3;
局部变量:
在一个函数内部定义的变量是内部变量。
有效范围为本函数内部。
全局变量:
在函数之外定义的变量是全局变始量。
有效范围为从定义变量的位置开到本源文件结束。
变量的存储类别(存储期):(存储期指变量在内存中的存在周期)
1.静态存储期
2.动态存储期
静态存储方式:在程序运行期间,系统对变量分配固定的存储空间
动态存储方式:在程序运行期间,系统对变量动态的分配内存空间
供用户使用的存储空间的情况:
1.程序区
2.静态存储区:
存放全局变量,静态局部变量。
程序开始执行分配存储单元,程序执行过程中占据固定的存储单元,程序执行完毕释放。
3.动态存储区:
存放自动变量/(动态局部变量)/(函数形参,函数中定义的变量),函数调用时的现场保护和返回地址。
函数调用时分配动态存储空间,调用结束时释放。
在程序执行过程中,这种分配和释放是动态的。
变量属性除了数据类型外,还有存储类别:
自动的(auto)
静态的(static)
寄存器的(register)
外部的(extern)
自动变量(动态局部变量):
自动变量用关键字auto作存储类别说明。
动态地分配存储空间。
函数中的局部变量,函数的形参和在函数中定义的变量属于自动变量。
调用结束时自动释放。
在函数体中,以下两种写法相同:
auto int a=1;
int a=1;
静态局部变量:
是一种特殊的自动变量。
在函数调用结束后,占用的存储单元不释放,在下次调用该函数时,仍保留上一次函数调用结束时的值。而不是初始值。
用static声明为静态局部变量。
用extern声明外部变量:(全局变量)
如果在定义点之前的函数想要引用该全局变量,则应该在引用之前用关键字extern对该变量作外部变量(全局变量)声明,表示该变量是一个将要在下面定义的全局变量。
不用此方法,则要在第一行定义。
使用此方法,则可以在任意一行定义全局变量,并且可以在另一个源程序文件中调用变量。
静态外部变量:
用static声明全局变量后,则只能在本文件中被引用,即使另一个文件使用extern的形式也无法调用此文件中static声明的变量。