const
作用:保护数据,修饰谁,谁就不可以修改,只读不写。
例如:
int a=10;
int b=11;
const int *p=&a;
p=&b; //这是合法的,编译器不会报错且正常运行。
*p=11; //是不合法的;
因为离const最近的是int,意味着const修饰int类型的数据,所以数据不能改,即a的值不可改变,所以10是固定不可修改,只读不写。但可以改变p指针指向的地址。即:
例二:
int a =10;
int b =11;
int const *p=&a;
p=&b; //这是不合法的,编译器会报错
*p=b //这是合法的
因为离const近的是(*)所以const修饰指针,所以指针指向的地址不可改变,即&a或p的值不可变但*p的值可以修改。
static
作用:限制变量的作用域,改变变量的存储域;
定义时static修饰的变量的特点:
(1)一定义在堆上,生命周期很长,不随函数的消亡而消亡,只有程序退出才被释放。
(2)只初始化一次。
(3)无法被extrn的访问;
extern
作用:访问其他文件中的全局变量或函数;
特点:不能继承static 修饰的变量或函数,且只能继承全局变量,用于声明。