常量
常量样子同变量的样子相同,但是不能够修改他的值
const int a = 15;
int const a = 15;		=>a是指向整形常量,值是15
int * pi;				=>指向整形的指针
int const *pi;			=>指针的指向可以改变,指向的值不能改变
int * const pi;			=>指针的指向不可改变
int const *const cpci;	=>都不可以改变    
    
声明const是很有必要的,如果你意外的修改了本来是不应该被修改的值,编译器会报错提示 
    
 
作用域
作用域类型:
- 文件作用域
 - 函数作用域
 - 代码块作用域
 
代码块作用域:
文件作用域
int a, b = 5;
int c(int x){}
int fun(int e)
{
    .....
}
//上面的a,b,c都属于这一类,因为它们没有被代码块包起来
 
原型作用域
就是函数参数
int fun(int a)		//参数a可以命名为任意的名字,仅仅作用域这个函数的开始到结尾
{
    ...
}
 
链接属性
链接属性一共有三种:external(外部) internal(内部) none(无)
关键字:extern 和static
-  
如果某个声明具有external链接属性,在前面加上static可以使链接属性变为internal
static int b表示b为该源文件私有(假设b之前缺省为external),在其他的源文件中如果也链接到一个叫做b的变量那么所引用的就是另一个不同的变量同样对函数名也有效
static int c(int d)设置为static之后可以防止被其他的源文件调用
 -  
使用external声明表示符号可将链接属性更改为external,例如下面的k,但是如果用于标识符的第二次或者以后的声明,不会更改第一次指定的类型如i
 
static int i 
int func()
{
    int j;
    extern int k;		=>更改为external链接属性
    extern int i;		=>第二次更改,不会改变属性
}
 
总结
- 具有external 链接属性的实体成为全局(global)实体,所有的源文件中所有的函数均可以访问。只要变量 不是声明与代码块内部或者函数定义内部,缺省情况下就是external
 - 如果一个变量声明于代码块的内部,在前面加上extern关键字代表它所引用的是 全局变量而不是局部变量
 











