在C语言中:
一:const
1、const修饰的变量,限定为只读,只有读的权限,不能修改,但还是一个变量。
也就是说:一般只要使用const修饰变量,都要完成变量的初始化(定义时赋值)。
const只在编译的时候起作用,运行的时候不起作用。
2、const修饰局部变量,储存在栈的空间中。
3、const修饰全局变量,在只读的存储区中来分配存储空间
4、const修饰指针时,指针变量不允许修改,不可分配为其他变量的地址,但可以修改指向空间的值。
例:int * const p = &a; // p是指针变量,不可修改
p = &a;
*p = 20; //可以修改指向空间的值
二:static
1、static是静态数据类型,表示把数据存储在数据段中的静态区(也叫全局区)。
2、static修饰的静态变量值初始化一次,未初始化的静态变量默认初始化为0。
3、static 修饰全局变量,全局变量只能在本文件中使用。
4、static 修饰局部变量,只在定义的作用域可见,变量的生命周期随整个程序结束才结束。
5、static 修饰局部变量和全局6变量的区别在于可见性,局部变量只在其被声明的代码块中可见。
6、static 修饰函数,函数只能在本文件中使用。
在C++中:
由于C++在C语言基础上发展而来,所以C++包含了C的部分,额外增加了部分特性。
C++中的独有功能:
const:
1、const 修饰类中的成员变量,成员变量的值不可修改。
编译时,如果有以下的情况,会为常量分配空间:
①对const 常量使用了extern 和 取地址符号 &,这种情况下,虽会分配空间,但不会使用存储在这个空间的值。
2、const 修饰成员函数,成员函数中的任何成员变量也不可修改。
3、const 修饰类对象,这个对象不能修改,能访问const修饰的成员函数。
static:
1、在c++中,修饰变量时,作用是为实现数据共享,不创建对象也可使用。
2、静态成员变量必须在类的外面进行初始化,只用初始化一次。
初始化格式: 数据类型 类名 :: 静态变量名
访问: 对象名 静态变量名
3、修饰静态成员函数时,函数属于整个类,没有隐含的this指针,只能访问这个静态函数中的静态变量。