1. 段落和局部变量
段落,亦称混合语句,即由{和}括起来的语句,看作单一的语句执行。
段落是可以嵌套的:
虽然嵌套的层数没有限制,建议层数在3~4层。
变量的范围,即变量的可视范围,在段落中声明的变量称作局部变量。
如上图所示,nValue和dValue都属于局部变量,下图是说明不同段落的变量访问:
段落的外部不能访问内部的变量,若内部的变量与外部变量同名,内部的覆盖外部的变量:
2. 全局变量
声明在段落以外的变量称为全局变量,拥有程序级有效范围。
全局变量可以跨过多个文件,通过前置声明或头文件,使用extern关键字;
使用头文件的,一般是全局变量用在多于2个文件中:
注意:1)尽量避免局部变量和全局变量同名;
2)除非是真正需要,才使用全局变量;因为全局变量可以在任何程序中修改它的值。
3. 文件范围和static关键字
文件范围,即变量仅仅在声明的文件中使用;通过static关键字声明;
自动持续变量,即其所在有效范围退出后,其值还原;
固定持续变量,即使其所在有效范围退出,程序运行期间,其值保持为最新:
4. 类型转换
1)变量赋值时,很多时候为隐式转换;类型的转换顺序:
Long double (highest)
Double
Float
Unsigned long int
Long int
Unsigned int
Int (lowest)
2)对象类型转换,第二种为显式转换:
建议使用:static_cast来进行安全类型转换;
5. 枚举类型
枚举属于自定义数据类型,每个枚举的值对应了一个符号常量;使用enum关键字
定义枚举,知道声明枚举变量时,才分配内存空间;
每个枚举都相当于一个整型值:
可以显示赋予枚举一个常量数值,若为空的,后一个值比前一个值大1;
枚举作为单一类型,重新给变量赋值其他枚举,会产生编译错误;
枚举比数值更有描述性,并且可以在调试中显示,比较实用。
6. 类型别名-typedef
使用typedef关键字定义类型的别名:
使用类型别名,可以隐藏类型的多于描述,如跨平台字节数:
7. 结构体类型
结构体类型属于聚合类型,不同数据类型组合一起;
可以通过成员选择器'.'来访问结构体的成员;
结构体变量可以作为函数参数传递,如:
结构体内亦可以包含其他结构体: