static关键字
static关键字具有隐藏式、记忆、延长生命周期的作用。
在C语言中,static既可以修饰变量,也可以修饰函数。
1) 修饰的变量保存在静态数据区,静态变量默认初始化为0,只初始化一次。
2) 修饰局部变量,延长变量的生命周期,直到程序运行结束,下一次运行依据是上一次的运行结果,体现其记忆功能。
3) 修饰全局变量,只在本文件可见,其他文件隐藏。
4) 修饰函数,只在本文件中调用,其他文件不可调用。
在C++中,static既可以修饰成员变量,也可以修饰成员函数。
1) 修饰的成员变量保存在全局数据区,被所有对象共享,在没有实例时就可以使用它,必须对它进行初始化且只能在类外进行初始化,只有整型静态常量才可以在类外进行初始化。static修饰的成员变量能被所有类方法访问,值可以改变;当被protected或者private修饰时,不能被类外访问。
2) 修饰的成员函数属于类,被所有对象共享,无this指针。只能访问静态成员,调用其他静态成员方法;不能访问非静态成员,调用非静态成员方法。
静态变量与全局变量的区别
1) 静态变量具有局部稳健域,全局变量具有全局作用域
2) 静态局部变量只对定义它的函数体可见,静态全局变量和全局变量对整个文件可见
3) 静态全局变量对本文件可见,对其他文件不可见,全局变量对所有文件可见
4) 静态局部变量之初始化一次,静态全局变量每次调用都会初始化。
全局变量与局部变量的区别
1) 局部变量存储在栈区,全局变量存储在静态全局区
2) 局部变量的生命期随局部函数的结束而结束,全局变量的生命期随主程序的结束而结束
3) 局部变量对定义它的函数内有效,静态局部变量对本文件有效;全局变量在整个工程文件夹内都有效,静态全局变量对本文件有效。
4) 局部变量的初始值为随机值,全局变量的默认初始值为0
5) 在C语言中,全局变量和静态变量是在编译阶段进行分配内存和初始化的,局部变量是在编译阶段进行分配内存,在运行时进行初始化的。
const关键字
const关键字在一定程度上可以提高程序的安全性和可靠性。
C语言中,const可以修饰普通变量,指针,函数形参,函数返回值。
1) 修饰普通变量时,该变量为只读变量,不能通过变量名修改变量的值,但可以通过地址修改;
2) 修饰指针时,const在*左边,用于修饰指针指向的变量,即指针指向的是常量,不能通过指针改变变量的值;