C/C++ const和static关键字的作用总结


程序的局部变量存在于栈区(stack),全局变量存在于静态区中,


static作用:“改变生命周期”或者“改变作用域”
1.作用于变量
用static声明局部变量:局部变量即指令执行到变量定义处才给变量分配存储单元,跳出代码块时释放内存单元(生命期)。用static声明局部变量时,则使变量成为静态的局部变量,编译时就为变量分配内存,直到程序退出时才释放存储单元。但是作用域未发生改变。
用static声明外部变量:外部变量缺省为静态变量,编译时分配内存,程序结束时释放内存单元。整个文件甚至别的文件也能引用,为了限制外部变量的作用域,使其只在本文件中有效,可用static关键字进行说明。

2.作用于函数
使用static用于函数定义时,函数只在本文件内部有效,对其他文件不可见,称之为静态函数。
如果想要其他文件可以引用本地函数,则要在函数定义时使用关键字extern。


const作用:只读read-only
1.定义常量
修饰变量,使得其值不能修改
TYPE const ValueName = value;
const TYPE ValueName = value;

2.指针使用const
(1)指针本身是常量不可变
char* const p;
const (char*) p;
(2)指针所指向内容是常量不可变
const char *p
char const p
(3)两者都不可以变
const char
const p

3.函数使用const
(1)const修饰函数参数
a.传递过来的参数在函数内不可以改变(无意义,因为Var本身就是形参)
void function(const int Var);

b.参数指针所指内容为常量不可变
void function(const char* Var);

c.参数为引用,为了增加效率同时防止修改。修饰引用参数时:
void function(const TYPE& Var); //引用参数在函数内为常量不可变

你可能感兴趣的:(C/C++ const和static关键字的作用总结)