一、知识点
      1、基本内置类型(算术类型和void类型)
      2、字面值常量和变量
      3、const限定符
      4、引用
      5、typedef名字
      6、枚举
      7、类类型
      8、头文件
二、要点
      1、const限定符
           魔数:在上下文中没有体现出来,好像这个数是魔术般的从空中出现的。如下面的“512”这个数            

 for (int i = 0; i != 512; ++i)
for (int i = 0; i != 512; ++i)  {
{
 //
   // ..
..
 }
}
           使用const限定符需注意:
           (1)、定义的const的变量仍难是一个左值,但是这个左值是不可修改的;且在定义时必须初始化;
           (2)、const变量默认都是文件局部的,如果想被其他文件访问,必须在前面加入extern。如: 
 file_1.cpp:
file_1.cpp:
 extern const int bufszie = 512;   // 定义,需要赋初值
extern const int bufszie = 512;   // 定义,需要赋初值

 fiel_2.cpp:
fiel_2.cpp:
 extern const int bufsize;
extern const int bufsize;

 .
.

 for (int i = 0; i != bufsize; ++i)
for (int i = 0; i != bufsize; ++i)  {
{
 //
  // .
.
 }
}
       2、引用
           引用(reference)就是对象的另一个名称;非congst引用只能绑定到与该引用相同类型的对方上,const引用可以绑定到不同但相关的类型对象或绑定到右值。
           重点:const引用,指向const对象的引用。 
1、赋值
const int ival = 1024;
const int &refVal = ival;   // 这个是正确的赋值
int &ref2 = ival;              // 这个是错误的赋值(ref2是可以重新赋值,这样导致ival的值会被改变,但ival是const的,所以这样赋值是不允许的)
2、初始化
double dval = 42.12;
const int &r1 = 42;         // 用右值(字面值常量)初始化
const int &r2 = dval;       // 用不同那个类型的对象初始化,这里的r2 = 42。如果r2不是const的话,这样初始化是错误的。
       3、typedef
            typedef可以用来定义类型的同义词。格式为:typedef + 数据类型 + 标识符。
        4、枚举(enum)
            格式:enum enumName(l可选) {enumerator1, enumerator2,...}
           (1)、枚举成员都是常量表达式(在编译器编译是就能计算出结果的整型表达式,或整型字面值常量);
           (2)、默认的第一个枚举成员是0,后面的每个枚举成员都比前一个大1;
           (3)、枚举成员值不是唯一的:enum Points { p1 = 1, p2, p3 = 2, p4},这其中p1=1,p2=2,p3=2,p4=3;
           (4)、枚举类型的对象初始化或赋值时,只能通过该类型枚举的某个成员进行。
       5、类类型
           注意class和struct的区别:唯一区别,默认情况下,struct的成员为public,class的成员为private。
       6、头文件
           在const变量是用常量表达式初始化时,可以将它定义在头文件中;如果不是,则不应该在头文件中定义。