static的使用

news2024/12/24 3:43:17

static的使用

在C语言中,static是一个关键字,用于指定变量、函数和代码块的作用域和生命周期。

用法:

静态变量

1.修饰变量:使用static关键字声明的变量是静态变量,它们的作用域被限制在定义它们的源文件中,它们的生命周期从程序开始运行到程序结束。静态变量的初始值为0。

在函数内部声明的静态变量具有以下特性:

· 生命周期:静态变量的生命周期从程序开始执行到程序结束,它们在整个程序执行期间都存在,而不是在函数调用期间创建和销毁。

· 可见性:静态变量的作用域仅限于包含它们的函数内部,即它们是局部变量,但其值在函数调用之间保持不变。

· 初次初始化:静态变量只在第一次进入其定义的函数时进行初始化,并且仅执行一次。

#include <stdio.h>

void increment(void);

int main()
{
    increment();//1
    increment();//2
    increment();//3
    return 0;
}

void increment(void)
{
    static int count = 0;//静态变量
    count++;
    printf("当前的计数值为:%d\n",count);
}

在这里插入图片描述

在函数外部(全局范围)声明的静态变量具有以下特性:

· 生命周期:静态全局变量的生命周期与程序的执行周期相同,但它们只在声明它们的源文件中可见,不能被其他源文件访问。

· 可见性:静态全局变量的作用域限于声明它们的源文件,不能被其他源文件使用。

2.修饰函数:使用static关键字声明的函数是静态函数,它们的作用域被限制在定义它们的源文件中,它们不能被其他文件中的函数调用。静态函数只能在定义它们的文件中使用。

使用’static’关键字声明的函数是静态函数。静态函数具有以下特性:

· 可见性:静态函数的作用域限于声明它们的源文件,不能被其他源文件调用。

· 隐藏性:将函数声明为静态的,可以将其隐藏在当前源文件中,以防止与其他源文件中具有相同名称的函数发生冲突。

#include <stdio.h>

static void increment(void);

int main()
{
    increment();//1
    increment();//2
    increment();//3
    return 0;
}
//定义一个静态函数,只能在定义它的文件中使用
static void increment(void)
{
    static int count = 0;//静态变量
    count++;
    printf("当前的计数值为:%d\n",count);
}

3.修饰代码块:使用static关键字声明的代码块被称为静态代码块,它们只会在第一次使用它们的时候被执行一次,之后不会再次执行。

注意事项:

【1】静态变量和函数只能被定义一次,不能在其他文件中再次定义。

【2】静态变量和函数的作用域和生命周期不同于普通变量和函数,它们的值在程序运行期间一直存在。

【3】静态变量的初始值为0,如果没有显示地给静态变量赋初值,则它们的值为0。

【4】静态函数只能在定义它们的文件中使用,不能被其他文件中的函数调用。

【5】静态代码块只会在第一次使用它们的时候被执行一次,之后不会再次执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/912029.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SRE 与开发的自动化协同 -- 生产环境出现 bug 自动生成异常追踪

简介 生产环境 bug 的定义&#xff1a;RUM 应用和 APM 应用的 error_stack 信息被捕捉后成为 bug。 以 APM 新增错误巡检为例&#xff0c;当出现新错误时&#xff0c;在观测云控制台的「事件」模块下生成新的事件报告&#xff0c;捕捉为 bug。同时利用 Dataflux Func 创建异常…

一篇文章带你认识重构

文章目录 一、重构的目的&#xff1a;为什么要重构&#xff08;why&#xff09;&#xff1f;二、重构的对象&#xff1a;到底重构什么&#xff08;what&#xff09;&#xff1f;三、重构的时机&#xff1a;什么时候重构&#xff08;when&#xff09;&#xff1f;四、重构的方法…

Transformer在医学影像中的应用综述-分类

文章目录 COVID-19 Diagnosis黑盒模型可解释的模型 肿瘤分类黑盒模型可解释模型 视网膜疾病分类小结 总体结构 COVID-19 Diagnosis 黑盒模型 Point-of-Care Transformer(POCFormer)&#xff1a;利用Linformer将自注意的空间和时间复杂度从二次型降低到线性型。POCFormer有200…

Unscreen-AI自动删除视频背景工具 无需绿屏

Unscreen是什么 Unscreen是一款AI自动删除视频背景工具&#xff0c;可以帮你把视频和GIF中的背景去除&#xff0c;目前支持的格式&#xff1a;.mp4、.webm、.ogg、.ogg、.ogv、.mov、.gif&#xff0c;用户不需要手动选择像素、颜色和掩码&#xff0c;而是使用AI 自动分析视频&…

ms-tpm-20-ref构建脚本说明

bootstrap 这个脚本主要做了以下几件事情&#xff1a; 1. 设置环境变量&#xff1a;将 AUTORECONF 环境变量设置为 autoreconf&#xff0c;如果该变量已经定义&#xff0c;则不会进行重新设置。 2. 生成文件列表&#xff1a;通过 src_listvar 函数生成各个目录下的源文件列表&…

易云维智慧实验室综合管理平台以技术赋能和数据驱动,助力实验室设备集中管控和能耗管理

目前&#xff0c;我国实验室存在纸质记录多、信息孤岛、不可追溯、安全隐患多、运行能耗高、管理难等问题&#xff1b;同时&#xff0c;国内LIMS实验室信息系统专业化程度低&#xff0c;功能结构单一&#xff0c;不能满足现阶段实验室管理需要&#xff1b;构建一个基于物联网技…

macOS M1使用TensorFlow GPU加速

本人是在pycharm运行代码&#xff0c;安装了tensorflow版本2.13.0 先运行代码查看有没有使用GPU加速&#xff1a; import tensorflow as tf# Press the green button in the gutter to run the script. if __name__ __main__:physical_devices tf.config.list_physical_dev…

Leetcode每日一题:849. 到最近的人的最大距离(2023.8.22 C++)

目录 849. 到最近的人的最大距离 题目描述&#xff1a; 实现代码与解析&#xff1a; 双指针 原理思路&#xff1a; 849. 到最近的人的最大距离 题目描述&#xff1a; 给你一个数组 seats 表示一排座位&#xff0c;其中 seats[i] 1 代表有人坐在第 i 个座位上&#xff0c…

jQuery Editable Select可搜索下拉选项框

前言 可搜索的下拉选项框 源码地址:https://github.com/indrimuska/jquery-editable-select 可搜索的下拉选项框 引入依赖 <script src"//code.jquery.com/jquery-1.12.4.min.js"></script> <script src"//rawgithub.com/indrimuska/jquery…

CentOS中Oracle11g进程有哪些

最近遇到Oracle数据库运行过程实例进程由于某种原因导致中止的问题&#xff0c;专门看了下正常Oracle数据库启动后的进程有哪些&#xff0c;查阅资料了解了下各进程的作用&#xff0c;记录如下。 oracle 3032 1 0 07:36 ? 00:00:00 ora_pmon_orcl oracle …

数据结构——线性数据结构(数组,链表,栈,队列)

文章目录 1. 数组2. 链表2.1. 链表简介2.2. 链表分类2.2.1. 单链表2.2.2. 循环链表2.2.3. 双向链表2.2.4. 双向循环链表 2.3. 应用场景2.4. 数组 vs 链表 3. 栈3.1. 栈简介3.2. 栈的常见应用常见应用场景3.2.1. 实现浏览器的回退和前进功能3.2.2. 检查符号是否成对出现3.2.3. 反…

“解放 Arweave“优惠:4EVERLAND的无缝上传教程

为了进一步展示 Arweave 的能力&#xff0c;4EVERLAND 骄傲地推出了“解放 Arweave”活动。我们认识到 Arweave 在数据完整性、抗审查性以及长期保存方面的无与伦比的优势&#xff0c;因此我们与这个去中心化的存储巨头建立了强大的集成。 克服了过去与加密货币支付逻辑相关的…

2023网络建设与运维模块三:服务搭建与运维

任务描述: 随着信息技术的快速发展,集团计划2023年把部分业务由原有的X86架构服务器上迁移到ARM架构服务器上,同时根据目前的部分业务需求进行了部分调整和优化。 一、X86架构计算机操作系统安装与管理 1.PC1系统为ubuntu-desktop-amd64系统(已安装,语言为英文),登录用户…

半导体市场遇寒冬,“热停机”成为新趋势 | 百能云芯

半导体制程市况不佳&#xff0c;晶圆代工商降价效果差。为削减成本&#xff0c;韩国主要代工厂如三星&#xff0c;启用“热停机”策略。此趋势蔓延至联电、世界先进、力积电等台湾代工厂&#xff0c;揭示短期订单前景黯淡&#xff0c;制程市况严峻。 据韩媒&#xff0c;三星、K…

console的几个常用用法

console.log() 其一、主要表示&#xff1a;向 Web 控制台输出一条消息; 其二、而具体是什么信息就以传递的实参为准&#xff0c;然后就是在控制台就能显示自己传递参数的结果&#xff1b; console.log([1,3,5,7]) // 输出 [1, 3, 5, 7] console.log({}) // 输出 {} conso…

*看门狗原理及注意事项

1.看门狗的作用是&#xff1a;当单片机因为软硬件问题或者外界干扰导致死机时&#xff0c;可以自动复位单片机&#xff0c;使系统重新正常工作。 当电脑的系统死机了&#xff0c;我们可以人为手动的进行重启&#xff0c;使电脑重新正常工作。但当火星的单片机系统死机了&#x…

无人机电力巡检:探索电力设施维护的新模式

电力巡检一直是电力行业中关键的环节&#xff0c;它的目的是确保电力设施的正常运行和安全稳定&#xff0c;对提高电力设施的可靠性、确保电力供应的稳定性和提高电力企业的管理水平具有重要的意义。传统的电力巡检方式通常采用人工的方式进行&#xff0c;这种方式存在很多的问…

Win10c盘满了怎么清理?快速清理,5个方法!

“快救救孩子吧&#xff01;我的电脑是win10系统的&#xff0c;现在c盘满了&#xff0c;根本没法继续使用电脑了。怎么才能快速的释放内存呢&#xff1f;非常着急&#xff01;感谢大家&#xff01;” C盘是Windows系统中重要的分区&#xff0c;当其存储空间满了&#xff0c;可能…

C++核心编程——类和对象(二)、友元、多态

C对象模型和this指针 4.3.1 成员变量和成员函数分开存储 在C中&#xff0c;类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 空类&#xff08;类里面是空的&#xff09;&#xff0c;空对象占用内存空间为&#xff1a;1字节。 静态成员变量&#xff0…

Simulink仿真模块 - Random Number

Random Number模块的功能是生成正态分布的随机数。它所在的库为: Simulink / Sources 如图所示: Random Number 模块可生成正态分布的随机数。要生成均匀分布的随机数,可以使用 Uniform Random Number 模块。两个模块都使用正态(高斯)随机数生成器(v4:rng 函数…