【C语言基础】变量类型,Static关键字的使用

news2025/4/13 11:21:45

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处

文章目录

  • 变量类型有哪些?
  • 全局变量特点
  • 全局变量的类型
    • 1.普通全局变量
    • 2.静态全局变量
    • 3.跨文件引用全局变量(extern)
  • 局部变量的类型
    • 1.普通局部变量
    • 2.静态局部变量(static)
    • 3.寄存器局部变量
  • 局部变量与全局变量的区别


变量类型有哪些?

全局变量:“在函数外定义的变量”,即从定义变量的位置到本源文件结束都有效;
局部变量:“在函数内定义的变量”,即在一个函数内部定义的变量,只在本函数范围内有效;

全局变量特点

在整个文件中,所有函数都可以访问全局变量,而且访问的都是该全局变量本身。
其次,如果之前某个函数中更改了它的值,那么后面再引用时它的值就是前面那次更改后的值。
在这里插入图片描述

全局变量的类型

1.普通全局变量

普通全局变量就是平时使用的,定义前不加任何修饰词。普通全局变量可以在各个文件中使用(可以成为跨文件全局变量),可以在项目内别的.c文件中被看到,所以要确保不能重名。

2.静态全局变量

✨什么是静态全局变量?

静态全局变量定义时在定义前加static关键字,告诉编译器这个变量只在当前本文件内使用,在别的文件中绝对不会使用,以解决重名问题。

它具有以下特点:

1、作用域为整个文件: 静态全局变量的作用域限定在声明它的源文件中,在其他文件中无法直接访问。
静态全局变量对其他源文件是隐藏的,不会与同名变量冲突。

2、静态存储持续时间: 静态全局变量在程序执行期间始终存在,不会因为函数的调用结束而销毁。它在程序启动时进行初始化,只会分配一次内存空间,并且保留其值直到程序终止。

3、默认初始化为0:如果没有显式初始化静态全局变量, 它会被自动初始化为0。

3.跨文件引用全局变量(extern)

✨什么是跨文件引用全局变量?

在C语言中,如果你想在不同的源文件中引用和共享全局变量,你可以使用 extern 关键字来声明该变量。

局部变量的类型

1.普通局部变量

普通变量定义时直接定义,或是在定义前加auto关键字。在C语言中,普通局部变量其实就是auto int a;平时可以省略auto。

2.静态局部变量(static)

✨什么是静态局部变量?

静态局部变量是在函数内部声明的具有静态存储持续时间的变量。

✨它具有以下特点:

1、作用域限定在函数内部,只在声明它的函数中可见。
2、存在于整个程序的执行期间,即使函数调用结束,静态局部变量的值也会被保留。
3、默认情况下,静态局部变量的值在每次函数调用时不会被重新初始化。

#include <stdio.h>

void function() {
    // 声明静态局部变量
    static int staticLocalVariable = 0;

    // 对静态局部变量进行累加
    staticLocalVariable++;

    // 输出静态局部变量的值
    printf("Static local variable: %d\n", staticLocalVariable);
}

int main() {
    // 多次调用函数来展示静态局部变量的特性
    function(); // 输出:Static local variable: 1
    function(); // 输出:Static local variable: 2
    function(); // 输出:Static local variable: 3

    return 0;
}

3.寄存器局部变量

Register关键字,register翻译为寄存器,是C语言里面的一个关键字。
比如:Register int i3;
Register类型的局部变量表现上和auto是一样的,这个东西基本没用。知道就可以了。Register被称为C语言中最快的变量。C语言的运行时环境承诺,会尽快将register类型的变量放在寄存器中去运行(普通变量在内存中)。所以register类型的变量访问速度会快很多。

局部变量与全局变量的区别

1.定义同时没有初始化,则局部变量的值是随机的,而全局变量的值默认为0。
2.使用范围上:全局变量具有文件作用域,即:在整个文件里面的所有函数都可以使用。而局部变量只有代码块作用域,即:局部变量在哪个函数里面定义,就只能在这个函数内的代码块起作用。
3.生命周期上:全局变量在程序开始运行之前的初始化阶段就诞生了,到整个程序结束退出的时候才死亡;而普通局部变量在进入局部变量所在的代码块时诞生,在该代码块退出时死亡,也就是说局部变量无法传递和保留下去。
4.分配位置上:全局变量分配在数据段上,而局部变量分配在栈上。
在这里插入图片描述

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

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

相关文章

【C/C++】#define宏替换高级用法

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

载舟前行——2023跳槽涨薪,Android的1000道面试题

转眼没有口罩的一年&#xff0c;就来到下半年。比起之前几年今天愈发的艰难&#xff1b;今年的金九银十的来到&#xff0c;许多跳槽找工作的也来到了旺季。岗位的减少无疑造成的后果就是竞争大&#xff0c;所以面试优胜劣汰你需要在千百人中脱颖而出。 面试不容小觑&#xff0…

英文晨读记录(broken heart)

2023/8/28 mate 配偶;伙伴;朋友;(男人之间常 用)哥儿们&#xff0c;伙计&#xff0c;老兄;同伴;subject n. 主题;问题;学科;课程;科目;话题;题目;题材;表现对象; adj. 服从于;取决于;视…而定;易遭受…的;受…支配;可能受…影响的;受异族统治的 vt. 使臣服;使顺从;(尤指)压服 …

Go 面向对象(匿名字段)

概述 严格意义上说&#xff0c;GO语言中没有类(class)的概念,但是我们可以将结构体比作为类&#xff0c;因为在结构体中可以添加属性&#xff08;成员&#xff09;&#xff0c;方法&#xff08;函数&#xff09;。 面向对象编程的好处比较多&#xff0c;我们先来说一下“继承…

软件系统测试报告包括哪些内容?对软件产品起到什么作用?

软件系统测试报告是软件开发过程中非常重要的一环。它是一个详细记录了对系统进行测试的结果和总结的文档。通过系统测试报告&#xff0c;开发人员可以了解系统在测试过程中的表现&#xff0c;发现系统的问题和不足之处&#xff0c;从而采取相应的措施进行改进。 一、软件系统…

睿趣科技:抖音开小店大概多久可以做起来

随着移动互联网的快速发展&#xff0c;社交媒体平台成为了人们分享生活、交流信息的主要渠道之一。在众多社交平台中&#xff0c;抖音以其独特的短视频形式和强大的用户粘性受到了广泛关注。近年来&#xff0c;越来越多的人通过在抖音上开设小店来实现创业梦想&#xff0c;这种…

CSPM考试如何报名?证书在哪查?

WOW&#xff01;咱们国家自己的项目管理证书来了&#xff01;&#xff01; 下面我将从7个方面对国标项目管理证书CSPM详细介绍&#xff1a; &#xff08;1&#xff09;CSPM是什么证书&#xff1f; &#xff08;2&#xff09;和PMP什么关系&#xff1f; &#xff08;3&#…

Windows系统下MMDeploy预编译包的使用

Windows系统下MMDeploy预编译包的使用 MMDeploy步入v1版本后安装/使用难度大幅下降&#xff0c;这里以部署MMDetection项目的Faster R-CNN模型为例&#xff0c;将PyTorch模型转换为ONNX进而转换为Engine模型&#xff0c;部署到TensorRT后端&#xff0c;实现高效推理&#xff0c…

SQL注入漏洞复现(CVE-2017-8917)

文章目录 搭建环境启动环境漏洞复现报错注入使用sqlmap 前提条件&#xff1a; 1.安装docker docker pull medicean/vulapps:j_joomla_22.安装docker-compose docker run -d -p 8000:80 medicean/vulapps:j_joomla_23.下载vulhub Docker Compose是 docker 提供的一个命令行工具&…

PKI/CA体系介绍

概述 目前最常用的第三方认证服务包括&#xff1a;PKI/CA和Kerberos。PKI/CA是基于非对称密钥体系的&#xff0c;Kerberos是基于对称密钥体系的。 数字证书&#xff1a;提供一种发布公钥的简便途径&#xff1b; 数字签名&#xff1a;用来确认信息发送者的身份&#xff0c;保证…

【Go 基础篇】走进Go语言的面向对象编程世界

欢迎各位编程爱好者们&#xff01;今天我们将进入Go语言的面向对象编程&#xff08;OOP&#xff09;世界&#xff0c;一窥这门语言如何运用OOP思想来组织和构建程序。无论你是初学者还是有一些经验的开发者&#xff0c;本文都将为你揭示Go语言中的OOP特性、方法和最佳实践。 O…

2023年高教社杯数学建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 最短时…

对称加密 非对称加密 AC认证 https原理

文章目录 对称加密及漏洞非对称加密及漏洞什么是数据摘要&#xff08;也称数据指纹&#xff09;什么是CA认证CA证书签发过程https通信方案 对称加密及漏洞 对称加密是一种加密算法&#xff0c;使用相同的密钥&#xff08;也称为对称密钥&#xff09;用于加密和解密数据。在对称…

不可错过!一分钟揭秘主品牌的战略价值

主品牌是企业的心脏&#xff0c;主品牌的进化是企业回归增长的关键&#xff0c;而主品牌的老化、弱化或退化则意味着企业面临衰退的风险。主品牌在企业中扮演着核心角色&#xff0c;它代表着企业的价值观和形象&#xff0c;直接影响着市场地位和竞争力&#xff0c;能够充分理解…

【JS案例】JS实现图片放大镜功能

JS案例图片放大镜 &#x1f31f;效果展示 &#x1f31f;HTML结构 &#x1f31f;CSS样式 &#x1f31f;实现思路 &#x1f31f;具体实现 1.初始化数据图片 2.获取所需DOM元素 3.初始化页面 初始化缩略图 绑定事件 &#x1f31f;完整代码 &#x1f31f;写在最后 &…

原子操作的原理和实现

目录 相关术语 处理器如何实现原子操作 Java如何实现原子操作 循环CAS实现原子操作 使用锁机制实现原子操作 原子操作是指一个或者多个不可再分割的操作。这些操作的执行顺序不能被打乱。 相关术语 缓存行&#xff1a;缓存的最小操作单位 &#xff08;面试题、重点&…

GP服务使用本地上传的文件进行分析

1、需求&#xff1a; 自己选择本地的文件上传在gp服务中进行分析&#xff0c;例如实现这个需求&#xff1a; 2、遇到的困境 发布创建TIN工具时要输入值表&#xff0c;但是我这里选择了本地的SHP文件和高程值后&#xff0c;发布出去就是一个常量值了&#xff0c;没法自己选择文…

App与小程序工具总结

文章目录 前言Burpsuite抓包问题LPosedJustTrustMe 绕过 SSL Pining小程序的反编译APP脱壳&#xff0c;反射大师、frida反射大师Frida 总结 前言 在进行渗透工作的时候&#xff0c;遇到过的App、小程序也不少了&#xff0c;有简单的&#xff0c;也有加固的比较不错的&#xff…

【软考】系统集成项目管理工程师(一)信息化基础知识【6分】

一、信息与信息系统 1、信息技术 为解决信息的采集、加工、存储、传输、处理、计算、转换、表现等问题而不断繁荣发展 核心-传输技术&#xff08;通常指通信、网络等&#xff09; 2、信息的质量属性 特点&#xff1a;客观性、普遍性 属性描述精确性对事物状态描述的精准程度…

接口幂等性设计的最佳实现

一、什么是幂等 二、为什么需要幂等 三、接口超时了&#xff0c;到底如何处理&#xff1f; 四、如何设计幂等 全局的唯一性ID 幂等设计的基本流程 五、实现幂等的8种方案 selectinsert主键/唯一索引冲突 直接insert 主键/唯一索引冲突 状态机幂等 抽取防重表 token令牌 悲观锁…