当前位置: 首页 > news >正文

C语言,静态变量static基础及使用实列

       static关键字有多种用途。以下是关于静态变量 (static) 的简要概述:

1.静态局部变量:
   - 在函数内部定义的静态变量。
   - 生命周期:从程序开始执行到程序结束。
   - 作用域:仅限于在其被定义的函数中。
   - 每次调用该函数时,静态局部变量不会被重新初始化。它会保留上一次的值。

   void increment() {static int count = 0;count++;printf("%d\n", count);}

          每次调用 increment() 时,count 的值都会递增。

          以下为static函数的使用,在新定义的函数fun里面定义了一个函数x,它被使用了static修饰。

void fun();
int x = 3;
int main() {int i;for(i = 1; i < x; i++) fun();
}
void fun() {static int x=1;x*=x+1;printf("%d", x);
}

        函数fun内部定义了一静态局部变量x,尽管与全局变量x同名,但它们占用各自不同的内存单元,对于静态变量x来说,因为它的生存期与程序相同,所以每次调用后其值将长期保留,其初始值是当程序运行时赋值一次,以后调用不再赋初始值。所以第一次调用输出2,第二次调用就输出6(2*3)。

2. 静态全局变量:
   - 在函数外部定义,但在文件内部的静态变量。
   - 生命周期:从程序开始执行到程序结束。
   - 作用域:仅限于在其被定义的文件中。
   - 对文件外的函数不可见。
   static int globalVar = 10;
3. 静态类成员(主要在面向对象的语言如C++、Java中):
   - 属于类而不是特定的对象实例。
   - 所有对象实例共享同一个静态成员的副本。
   - 需要使用类名而不是对象来访问静态成员。

   class MyClass {public:static int staticVar;};int MyClass::staticVar = 0;

           在Java中,它类似于:

   public class MyClass {public static int staticVar = 0;}

4.静态函数:
   - 在C和C++中,可以有静态函数。
   - 仅在定义它的文件中可见。
   - 不能访问类的非静态成员(在C++中)。

   static void myFunction() {// ...}

5. 静态方法(面向对象语言):
   - 属于类而不是对象实例。
   - 不能访问类的非静态成员。
   - 通常用于实现不需要访问或修改对象特定数据的功能。

6.其他用途:static关键字在某些编程语言和上下文中还有其他的意义和用途。

当使用static关键字时,需要明确你想要的效果以及你正在使用的编程语言的语法规则。

http://www.lryc.cn/news/131288.html

相关文章:

  • 2023.8.19-2023.8.XX 周报【人脸3D+虚拟服装方向基础调研-Cycle Diffusion\Diffusion-GAN\】更新中
  • 微表情识别(Python编程,cnn模型)
  • More Effective C++学习笔记(2)
  • 零售行业供应链管理核心KPI指标(三)
  • 广州华锐互动:奶牛难产原因及救治VR仿真实训系统
  • 神经网络基础-神经网络补充概念-62-池化层
  • 第8章:集成学习
  • 设计HTML5列表和超链接
  • React Native 环境搭建
  • 【uniapp】中 微信小程序实现echarts图表组件的封装
  • AgentBench::AI智能体发展的潜在问题(三)
  • zookeeper-安装部署
  • jvm-运行时数据区概述及线程
  • 石头IT
  • R语言dplyr包select函数删除dataframe数据中包含指定字符串内容的数据列(drop columns in dataframe)
  • [GitOps]微服务版本控制:使用ArgoCD 部署Grafana Loki
  • 什么是单例模式
  • 【Linux从入门到精通】动静态库的原理与制作详解
  • 【mybatis】mapper.xml中foreach的用法,含批量查询、插入、修改、删除方法的使用
  • c#扩展方法的使用
  • rhel 8.7 部署 keepalived+haproxy 实现 mysql 双主高可用场景
  • 常见指令以及权限理解
  • OpenCV基础知识(6)— 滤波器
  • IOC容器的基础功能设计模式
  • FFmpeg参数说明FFmpegAndroid饺子视频播放器
  • DNS入门学习:DNS解析生效问题(中科三方)
  • Ubuntu22.04编译安装Mysql5.7.35
  • C++音乐播放系统
  • Django笔记之log日志记录详解
  • vue局部打印多页面pdf