文档章节

static和const关键字的作用

JoshSone
 JoshSone
发布于 2017/03/27 20:47
字数 518
阅读 19
收藏 1

static的关键字的主要作用如下:

(1)函数体内,static变量的作用范围为该函数体,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值。

(2)在模块内的static全局变量可以被模块内所有函数访问,但不能被模块外其他函数访问。

(3)在模块内的static函数只可被这一块模块的其他函数调用,这个函数的使用范围被限制在声明它的模块内。

static int i=0;
void fun1(){
    i=0;
    i++;
    printf("i=%d\n",i);
}
void fun2(){
    static int j=0;
    j++;
    printf("j=%d\n",j);
}
int main(int argc, const char * argv[]) {
    // insert code here...
    for (int i=0; i<5; i++) {
        fun1();     // ---> i=1  i=1  i=1  i=1  i=1  
        fun2();     // ---> j=1  j=2  j=3  j=4  j=5
    }
    return 0;
}
/*
  j被定义为局部静态变量,其值在每次函数结束时都被保留,所以结果都是上一次值加1
*/

const关键字的作用如下:

(1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了。

  const int a=0;
    a=10;   //改行显示报错
/*
 * const修饰的是只读变量,只读变量的值在定义后就不能再改变了
 */

(2)对指针来说,const可以指定指针本身-->指针常量(var * const p 指向不可变,所指内容可变)

//错误示范
    int *const q=&a;
//  q=&b;  

 也可以指定指针所指的数据-->常量指针(var const *p 指向可变,所指内容不可变)

//错误示范
      int const *p=&a;
//    *p=10;

也可以既指定指针本身又指定指针所指的数据(const var *const q 指向不可变,所指内容不可变)

//错误示范
      const var *const p= &a;
//    *p=10;
//     p=&b;

注意:在定义const变量时,必须要对变量初始化,否则编译器会报错。

© 著作权归作者所有

JoshSone
粉丝 7
博文 76
码字总数 32794
作品 0
长春
iOS工程师
私信 提问
关于C++中的类

(1)对于const成员函数,从const关键字必须同时出现在声明和定义处,若只出现在一处,就会出现编译时错误。 (2)struct关键字和class关键字的区别就是在于默认访问标号不同。如果类是struc...

最新更新消息
2015/10/14
35
0
C/C++中static与const的区别与联系

static是初学者经常搞错的概念之一,static定义的变量在程序初始化的时候会初始化在静态数据区,程序运行期间完全不变,是指这个区域不变,而内容是可以改变的。换句话说,static只是指定将其...

刺客五六柒
02/25
0
0
const static在c c++中的作用

一.C语言中的const const是C语言中保留的一个关键字,它用来限定一个变量是只读的,即不可变的。程序中使用const可以在一定程度上提高程序的健壮性,但是程序中使用过多的const,可能在对代码...

y_x
2011/11/17
0
0
Explicit 关键字和各种类型转换(转)

说实话,从来没有感觉到这个关键字有用,直到今天。 explicit的意思是明显的,和它相对应的一个词是implicit意思是隐藏的。 我参考了MSDN和《c++标准程序库》对这个关键字的描述,并参考了网络...

AlphaJay
2011/07/25
0
0
使用static与const关键字时需要掌握的知识

static: 1、不考虑类,static的作用: 1)第一个作用:隐藏。使得全局变量和函数对其它文件不可见,同时避免了不同文件的命名冲突。 2)第二个作用:默认初始化为0。未初始化的全局静态变量和局...

shenhuan1104
2018/01/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一个简单易用的Linux文本编辑器:nano的安装与使用

许多状况下咱们都必要编纂云主机里的文本情节,而现时用的比力多的文本编纂器是vim,这个估量许多人都以为很难用,这边伏笔VPS引荐一个简略易用的文本编纂器nano,比vim简略许多,很轻易上手...

shzwork
33分钟前
3
0
go recover

异常、错误常见语言处理 一般语言都有其错误处理方式,就以鄙人熟悉的php来距离吧。 PHP有多个级别的错误处理方式,以防止程序在还未正确执行完毕时,就造成了程序的提前结束。 try/catch/fi...

o0无忧亦无怖
52分钟前
1
0
玩转混合云+边缘计算,且看ZStack Mini!

文章导读:2019年4月16日,ZStack新品和合作伙伴战略发布会上,面向集团客户和边缘场景需求,ZStack重磅推出ZStack Mini超融合一体机(以下简称:ZStack Mini)和ZStack多云管理平台(以下简...

ZStack社区版
53分钟前
2
0
springboot 整合redis

springboot整合redis官方是有文档的: 英文看不懂可以翻译,代码应该看得懂, 这个是自动注入的。当然也可以xml注入,手动配置。 整合步骤: pom文件: <!-- spring boot web --> ...

jason_kiss
57分钟前
3
0
手机耗电问题,大部分是没有正确使用这个“锁”

当安卓设备闲置时,设备很快会进入休眠状态,以达到省电和减少CPU占用的目的。但有些应用在手机灭屏甚至系统休眠时,依然频繁占用CPU处理事件或唤醒屏幕提示用户消息,这类行为会导致手机耗电...

安卓绿色联盟
58分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部