理解Static与Const

来源:互联网 发布:js获取url的某个参数 编辑:程序博客网 时间:2024/06/09 23:47
  • static作用:”改变生命周期” 或者 “改变作用域”
  • const作用: “只读(readonly)”

一.static关键字

1.作用于变量

  总结:用static声明局部变量,使其变为静态存储方式(静态数据区),作用域不变;用static声明外部变量,其本身就是静态变量,这只会改变其连接方式,使其只在本文件内部有效,而其他文件不可连接或引用该变量。

  • 用static声明局部变量——-

局部变量指在代码块{}内部定义的变量,只在代码块内部有效(作用域),其缺省的存储方式是自动变量或说是动态存储的,即指令执行到变量定义处时才给变量分配存储单元,跳出代码块时释放内存单元(生命期)。

static声明局部变量时,则改变变量的存储方式(生命期),使变量成为静态的局部变量,即编译时就为变量分配内存,直到程序退出才释放存储单元。这样,使得该局部变量有记忆功能,可以记忆上次的数据,不过由于仍是局部变量,因而只能在代码块内部使用(作用域不变)。

  • static声明外部变量——-

外部变量指在所有代码块{}之外定义的变量,它缺省为静态变量,编译时分配内存,程序结束时释放内存单元。同时其作用域很广,整个文件都有效甚至别的文件也能引用它。为了限制某些外部变量的作用域,使其只在本文件中有效,而不能被其他文件引用,可以用static关键字对其作出声明。

2.作用于函数

使用static用于函数定义时,对函数的连接方式产生影响,使得函数只在本文件内部有效,对其他文件是不可见的。这样的函数又叫作静态函数。使用静态函数的好处是,不用担心与其他文件的同名函数产生干扰,另外也是对函数本身的一种保护机制。

如果想要其他文件可以引用本地函数,则要在函数定义时使用关键字extern,表示该函数是外部函数,可供其他文件调用。另外在要引用别的文件中定义的外部函数的文件中,使用extern声明要用的外部函数即可。

二.const作用: “只读(readonly)”

1.定义常量

修饰变量,以下两种定义形式在本质上是一样的。它的含义是:const修饰的类型为int的变量age是不可变的,readonly

  • int const age = 22;
  • const int age = 22;

2.指针使用const

  • char * const pContent;:指针本身是常量;
  • const char *pContent;:指针所指向的内容是常量

区别方法:沿着”“号划一条线:如果const位于”“的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于”*”的右侧,const就是修饰指针本身,即指针本身是常量。

0 0
原创粉丝点击