一、static的作用:
1.当修饰全局变量时 : 改变链接属性,让其他文件不可调用,使全局变量的作用域变小了。
例如
在main函数外,定义一个全局变量a, 变量a的使用权,仅限定在该文件下可用,外部文件不可调用。如果 ,全局变量未用static修饰,那么其他文件可通过 extern关键字调用。
2.修饰局部变量时: 改变变量生命周期
普通的局部变量,在程序执行进入作用域时被创建,存放在栈区,当出了作用域立即会被销毁。而用static修饰后的局部变量是存放在”静态区”的,直到程序结束时才会被销毁。
例如 定义一个函数
int test(void)
{
int i=2;
int j=3;
int sum;
sum = i+j;
return sum;
}
当主函数调用test这个函数时,进入这个函数,在栈区,创建了 i 和 j 还有sum这三个变量,当执行完毕这个函数,i ,j ,sum这三个变量都会被系统从栈区中销毁,假如用static修饰了变量i,变量i就会被创建在静态区而不是栈区,它直到程序结束才会被销毁。
注意!!!static修饰局部变量只改变生命周期,不会改变作用域。
3.修饰函数: static对函数的修饰和修饰全局变量的功能很相似,修饰函数时也是会改变函数的链接属性,从而使得函数的作用域变小,仅限定在源文件中使用,其他文件不可调用该函数。
二、const 的作用
1. 修饰变量 : 如果一个变量被const修饰,那么这个变量就只能被访问,而不能修改。
例如
定义一个全局变量
int a =20 ;
此时未被const修饰,那么我们仍然可以在主函数中,将变量a赋其他值,如a=30 ,这是允许的。
如果定义的变量 被const修饰:
const int a =20;
此时我们只能访问,而不能重新给变量a赋值
如 a=30;此时是不被允许的。
2.修饰指针