C中 static 的用法

C语言中,根据 static 的使用位置可以分为两种:

1、修饰函数内部的变量

即函数内的静态变量,这样定义的变量也称为局部静态变量

它的值不会因为函数调用的结束而被清除,当函数再次被调用时,它的值是上一次调用结束后的值。

如下图所示,变量 x 每次都会从新初始化,而静态变量 y 的值则不会。

2、修饰文件级别的变量或函数

表示该变量和函数只在本文件可见,其他文件看不到、也访问不到该变量和函数。

这样的变量通常称为静态全局变量,这样的函数称之为静态函数

C++中 static 的用法

由于C++引入了类,在保持与C语言兼容的同时,static 关键字又有了两种新用法。

3、修饰类的数据成员

即所谓的“静态成员”。这种数据成员的生成周期大于类的对象(实例),静态数据成员是每个类有一份,而普通数据成员是每个对象有一份。

静态成员变量属于整个类所有,只能在类的内部声明,在类的外部(全局区)定义和初始化,静态数据成员初始化的格式:

:: =

4、修饰类的成员函数

即所谓的“静态成员函数”。这种成员函数只能访问静态成员和其他静态成员函数,不能访问非静态成员和非静态成员函数。

因为类的静态成员函数是属于整个类而非类的对象,所以它没有this指针,这就导致了它仅能访问类的静态数据和静态成员函数。

c++ 类全局变量_static在C和C++中的用法总结相关推荐

  1. android r类 作用,Android 主项目和 Module 中 R 类的区别

    Android 主项目和 Module 中 R 类的区别 我们知道 Android 项目中会通过自动生成一个 R.java 类的方式来保存项目中所有资源文件的标识在主项目中生成的 R.java 中的资 ...

  2. java在容器中导入图片_Java程序员必学技术:@Import直接导入类,在容器@Configuration、@Component中是怎么直接导入类注册到容器的?...

    Java程序员必学技术:@Import直接导入类,在容器@Configuration.@Component中是怎么直接导入类注册到容器的? Spring IoC 容器是一个管理 Bean 的容器,在 ...

  3. c 包含其他文件_C语言:全局变量在多个c文件中公用的方法!

    用C语言编写程序的时候,我们经常会遇到这样一种情况:希望在头文件中定义一个全局变量,然后包含到两个不同的c文件中,希望这个全局变量能在两个文件中共用. 举例说明:项目文件夹project下有main. ...

  4. openopc.opcerror: dispatch: 无效的类字符串_实战PyQt5: 064-MV框架中的Model类

    模型(Model)简介 在Model-View框架中,模型(Model)为视图(View)和委托(Delegate)使用数据提供了标准接口.大多数情况下模型中并不真正存储数据(如果只有少量的数据,可以 ...

  5. 随机创建圆形、三角形或者矩形类的对象, 存放在数组中,并计算出每个形状的面积和周长

    随机创建圆形.三角形或者矩形类的对象, 存放在数组中,并计算出每个形状的面积和周长 题目要求 解题思路 代码 形状类代码 圆形类代码 三角形类代码 矩形类代码 方法类代码 运行结果 题目要求 随机创建 ...

  6. C++核心准则​NR.4:不要坚持将每个类声明放在其自己的源文件中

    NR.4: Don't insist on placing each class declaration in its own source file NR.4:不要坚持将每个类声明放在其自己的源文件 ...

  7. CC#中List用法介绍详解学习通http://www.bdgxy.com/roundWorker类用法总结学习通http://www.bdgxy.com/

    文章来源: 学习通http://www.bdgxy.com/ 普学网http://www.boxinghulanban.cn/ 智学网http://www.jaxp.net/ 表格制作excel教程h ...

  8. 习题 8.5 将本章的例8.4改写为一个多文件的程序:1.将类定义放在头文件arraymax.h中;2.将成员函数定义放在源文件arraymax.cpp中;3.主函数放在源文件file1.cpp中。

    C++程序设计(第三版) 谭浩强 习题8.5 个人设计 习题 8.5 将本章的例8.4改写为一个多文件的程序: 1.将类定义放在头文件arraymax.h中: 2.将成员函数定义放在源文件arraym ...

  9. 练习:创建 一个新类 Gerbil,包括 int getbilNumber,在构造器中初始化它。

    package com.list.arraylist;import java.util.ArrayList;/***创建 一个新类 Gerbil,包括 int getbilNumber,在构造器中初始 ...

  10. C++用类实现二叉树的创建,前序中序后序遍历(附完整代码)

    C++用类实现二叉树的创建,前序中序后序遍历(附完整代码) 前序.中序.后序遍历 直接上代码 前序.中序.后序遍历 二叉树的遍历分为前序遍历,中序遍历和后序遍历三种遍历方法.前序遍历的顺序为" ...

最新文章

  1. sql server 2008连接oracle操作步骤详细记录,SQLServer连接Oracle详细步骤
  2. redhat7配置本地yum、163 yum、epel 源
  3. Python工具 | 4个好用的开源 Python 下载器
  4. ADC和DAC中多通道的含义
  5. VMware 虚拟化编程(2) — 虚拟磁盘文件类型详解
  6. GDI+用PNG图片做半透明异型窗口
  7. lnmp下mysql创建新用户授权后登录报错 1045 Access denied for user 'name'@'localhost
  8. MapReduce案例(数据中获取最大值TopN)
  9. Linux下创建和删除软、硬链接(ln)
  10. html 转换 pdf 工具
  11. 计算机专业专转本题目(新考纲)
  12. JavaScript设计模式:四、发布订阅模式
  13. Jitsi Meet的prosody模块报错Client disconnected: ssl handshake failed
  14. unity 获取设备的GPS信息
  15. 2022金属非金属矿山(露天矿山)安全管理人员考试练习题模拟考试平台操作
  16. 免费可用的Android手机传感器数据采集程序(附程序)
  17. CentOS 可以ping通IP和域名,但打开火狐却上不了网
  18. java.lang.NoSuchFieldError: count at org.eclipse.jface.viewers.ColumnViewer$1.mouseDown
  19. 自从掌握了Google和百度的 16 个高级搜索技巧,我再也没有解决不了的 bug 了
  20. 液晶显示器原理和应用

热门文章

  1. 导出excel乱码问题
  2. 【原译】一个可定制的WPF任务对话框
  3. 非关系数据库-NoSQL探讨
  4. 前端项目架构模板-(三)交互式打包及自动化部署前端项目
  5. linux服创建目录,Linux目录的创建与删除命令
  6. oracle9i阻塞,Oracle 9i 整体性能优化概述(zt)
  7. java压测请求线程数_jmeter压力测试 设置一秒发送一次请求,一秒两次请求
  8. 监听程序不支持服务 linux,ORA-12520: TNS: 监听程序无法为请求的服务器类型找到可用的处理程序...
  9. matlab出图时汉字都变成方框_Autodesk软件界面中文字都变成符号“方框”,怎么办呢?...
  10. python的flask实现接口_python+flask:实现POST接口功能