在C++语言中,Static关键字有两个作用:修饰变量和修饰函数。

Static修饰全局变量叫做静态全局变量,

Static修饰局部变量叫做静态局部变量,

Static修饰函数叫做静态函数;

静态全局变量:限制变量的作用域,仅在本文件中访问,其他文件不可访问;

静态局部变量:仅在本函数体内访问,本文件其他函数体内不可访问;但静态局部变量的值在程序运行期间不会销毁;

静态函数:仅在本文件中调用,其他文件中不可调用,即程序员不用担心编写的函数与其他文件的函数同名。

工具/原料

  • C++ Static关键字

方法/步骤

  1. 1

    静态全局变量:Static修饰全局变量

    #include<iostream>

    #include<stdio.h>

    using namespace std;

    static int j; // 静态全局变量

    int fun2(void){

    j = 0;

    j++;

    return j;

    }

    int main()

    {

    int k = 0, n = 0;

    for(k=0; k<10; k++){

    n = fun2( );

    printf("%d\n", n);

    }

    getchar();

    return 0;

    }

    此时,静态全局变量的值与全局变量的值结果一致;只是作用域不同;

  2. 2

    静态局部变量:Static修饰局部变量

    #include<iostream>

    #include<stdio.h>

    using namespace std;

    int fun1(void)

    {

    static int i = 0;//静态局部变量

    i++;

    return i;

    }

    int main()

    {

    int k = 0, m = 0;

    for(k=0; k<10; k++){

    m= fun1( );

    printf("%d\n", m);

    }

    getchar();

    return 0;

    }

    此时,静态局部变量的值在程序运行期间不销毁;

  3. 3

    静态函数:Static修饰函数

    #include<iostream>

    #include<stdio.h>

    using namespace std;

    static int fun1(int i)//静态函数

    {

    return i++;

    }

    int main()

    {

    int k = 0, m = 0;

    for(k=0; k<10; k++){

    m= fun1(k);

    printf("%d\n", m);

    }

    getchar();

    return 0;

    }

    此时,静态函数运行过程和子函数运行过程一致,只是作用域不同;

  4. 4

    特别声明:

    (1)静态局部变量数据属于静态存储,在静态存储区内分配内存单元,在整个程序运行期间都不释放;

    ...........动态局部变量属于动态存储,占动态存储区空间而不占用静态存储区空间,函数调用结束后立即释放空间。

    (2)静态局部变量时在编译时被赋值的,即自始至终只赋值一次,在程序运行时它已经有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。

    ..........自动变量赋初值,不是在编译时进行的,而是在运行时进行,所以每调用一次函数就赋一次初值。

    END

C++:Static修饰变量 vs Static修饰函数相关推荐

  1. C++:const修饰变量、形参、函数

    const修饰变量 int main(int argc, char* argv[]) {const int b = 3;int* c = (int*)&b;*c = 5;//这里即便把b所在地 ...

  2. 牛客网Java刷题知识点之关键字static、static成员变量、static成员方法、static代码块和static内部类...

    不多说,直接上干货! 牛客网Java刷题知识点之关键字static static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个"伪全局"的概 ...

  3. Java架构-JavaSE(三)之static、final、abstract修饰符

    阅读目录(Content) 一.static修饰符 1.1.static变量 1.2.static方法 1.3.代码块和静态代码块 1.4.创建和初始化对象的过程 二.final修饰符 2.1.修饰类 ...

  4. php的 静态变量,PHP之static静态变量详解

    在看别人项目过程中,看到函数里面很多static修饰的变量,关于static修饰的变量,作用域,用法越看越困惑,所以查了下资料. static用法如下: 1.static 放在函数内部修饰变量 2.s ...

  5. C语言 static静态变量

    静态变量类型说明符是static.静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都 ...

  6. static静态变量的理解

    静态变量 类型说明符是static. 静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期 ...

  7. C和C++编程中static关键字的含义-修饰函数和变量

    static用来修饰一个函数的时候,表示的意思如下: 1.表示该方法只在本c文件中有效.在其他c文件中无法访问这个方法. 2.static的方法的定义一般不放在.h文件中,因为这个方法只在一个c文件中 ...

  8. 初识C语言之——static修饰变量及函数的认知。

    static--C语言中考题常见的关键字 在c语言中:static是用来修饰变量和函数. 我们可以先从字面意思来理解,即"静态的,静止的". 以至于它的修饰作用就有如下三个作用. ...

  9. C语言static关键字修饰变量及函数时的用法和原理

    目录 一.static关键字修饰局部变量 二.static关键字修饰全局变量 三.static关键字修饰函数 一.static关键字修饰局部变量 在内存中,往往将其分为三个区块,栈区,堆区,静态区.C ...

最新文章

  1. ASP.NET缓存:方法分析和实践示例
  2. springboot 多数据源 读写分离 AOP方式
  3. SLS多云日志采集、处理及分析
  4. java 中for循环中重复定义的变量 为什么不报错?
  5. 147_Power BI Report Server demo演示
  6. 【报告分享】疫情期间抖音、快手带货趋势分析报告.pdf(附下载链接)
  7. C# DataTable常用方法总结
  8. 亚马逊-不一样的电商公司
  9. 喜马拉雅音频下载工具 支持免费音频/VIP音频 文尾有彩蛋
  10. 2020年acwifi拆过的无线路由器配置汇总
  11. win10搜索框没反应或者搜索太慢,看这篇就够了
  12. JAVA视频学习笔记-马士兵(一)
  13. openSUSE 11.2 上试动Mono
  14. 知码开门的奇葩编译器
  15. adb命令 激活并设置默认输入法
  16. PS效果——斜面浮雕
  17. python cooler包处理Hi-C数据
  18. log4j 配置详解(超详细)
  19. verilog验证平台技巧(避免竞争的办法)
  20. Android磁盘管理-之vold源码分析(2)

热门文章

  1. [当人工智能遇上安全] 6.基于机器学习的入侵检测和攻击识别——以KDD CUP99数据集为例
  2. 【数据结构与算法】之深入解析“复制带随机指针的链表”的求解思路与算法示例
  3. Swift之深入解析“泛型”的底层原理
  4. iOS开发之打电话,发短信,发送邮件
  5. @1.0.0 dev: `webpack-dev-server --inline --progress --config
  6. 303. 区域和检索 - 数组不可变
  7. 114. Flatten Binary Tree to Linked List 二叉树展开为链表
  8. 机器人写诗项目——递归神经网络(RNN)
  9. 大数据互联网架构阶段 大型电商项目数据库设计时应该注意的点
  10. python文件选择:tkFileDialog 基础