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); //引用参数在函数内为常量不可变

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,744评论 0 38
  • 注:这是第三遍读《C语言深度解剖》,想想好像自从大学开始就没读完过几本书,其中谭浩强的那本《C语言程序设计(第四版...
    HavenXie阅读 5,753评论 1 6
  • 题记: 海棠作业。呼吁大家有话好好说。(中华新韵) 七绝·言香 花居局促也香人,不以时情苦友心...
    舒己怀_Frank阅读 5,234评论 33 36
  • 我是只化身孤岛的蓝鲸,我想去如同伊甸般的仙境,我听见你温柔的歌声,我看见你眼中的春与秋胜过我见过爱过的一切,我愿陪...
    Dekiyangzom阅读 3,226评论 3 3
  • 从晚自习结束到宿舍洗漱完毕,看了一集爸爸去哪了,被jasper暖萌萌的笑容所吸引,然后就各种翻阅往期的内容...
    夭夭的妖阅读 2,563评论 2 4