揭秘c语言储存类别

news/2024/10/18 16:45:40/

前言

欢迎来到我的博客

个人主页:北岭敲键盘的荒漠猫-CSDN博客

 本文将整理c语言的储存类型的知识点

储存类型概念

描述:用于解决内存开辟与解放的时间的问题。跟作用域没啥关系。

但是呢,他也是能影响到程序的运行的,所以是很关键的。

类型:

auto :自动变量,默认的类型

static: 静态变量

extern: 拓展变量

auto变量

描述:默认变量,我们不定义的话他默认是这个。这个的内存开辟为,执行这个定义变量语句的时候就会开辟内存空间,当我们执行完这个变量所在的定义域的时候就会解除他所占用的空间。

因为我们之前一直都是用这个默认的变量,所以我就不多废话了。

static静态变量

官方理解:这个变量从执行后就会一直存在,他的内存直到程序结束的时候才会释放。

方便的理解:比如在函数中,定义后他就一直存在,下次调用函数不再定义他,而是使用上次定义的这个变量进行操作。

他的作用分为两种:

局部变量

全局变量

全局变量

提前预知:我们一个c文件中的函数或者变量,是可以引入到其他的c文件中使用的。

static定义全局变量的效果:没错,就是禁止这个全局变量能够被拿到其他的文件中使用,让他只能在本文件中使用。

局部变量

描述:在局部变量中,我们用startic定义变量,倒是可以直接把这个静态变量所在的函数引用的其他的文件中。但是在局部变量中,这个startic变量是从执行他开始就存在,一直存在到程序结束。中途要是重复调用函数,再到他赋值的这行代码,就会直接跳过。

案例演示:

#include <stdio.h>int fun()
{static int a = 1;a++;printf("%d", a);
}int main()
{int b;for (b = 0; b < 5; b++) // 循环执行函数三次fun();
}

结果如下:

你看,按理来说每次执行函数都应该执行一个a=1,重置a,但是我们加上了startic之后,他就会跳过,不会再重新赋值了。

注意点:如果是定义了startic变量,而且没给他赋初始值的话,他就自己默认为0.

#include <stdio.h>int fun()
{static int a;printf("%d", a);
}int main()
{fun();
}

extern变量

extern有两个作用,

第一个是声明主函数下面的变量,让主函数能够使用下方变量。

第二个是从其他文件中找到这个变量,来引入到这个文件中。

从exper1中获取a变量,然后再exper中使用。

他与include的差距就是,他是引入一个变量,include引入整个文件。


http://www.ppmy.cn/news/1467453.html

相关文章

【Vue】自定义指令-v-loading指令的封装

场景 实际开发过程中&#xff0c;发送请求需要时间&#xff0c;在请求的数据未回来时&#xff0c;页面会处于空白状态 > 用户体验不好 需求 封装一个 v-loading 指令&#xff0c;实现加载中的效果 分析 本质 loading效果就是一个蒙层&#xff0c;盖在了盒子上 数据请求…

读AI未来进行式笔记04数字医疗与机器人

1. 数字医疗 1.1. 20世纪的“现代医学”得益于史无前例的科学突破&#xff0c;使得医疗的方方面面都得到改善&#xff0c;让人类预期寿命从1900年的31岁提高到2017年的72岁 1.2. 现有的医疗数据库和流程将实现数字化 1.2.1. 患者记录 1.2.…

尚硅谷2024新版3小时速通Docker教程

尚硅谷2024新版3小时速通Docker教程 百度网盘&#xff1a;https://pan.baidu.com/s/1SncgHbdJehvZspjcrrbLSw?pwd6c27

解释Java中的安全模型

Java中的安全模型是一个多层次、综合性的框架&#xff0c;旨在确保Java应用程序的安全运行。开发者在设计和实现Java应用程序时&#xff0c;应该合理利用和配置Java提供的这些安全机制&#xff0c;确保应用程序的数据和用户的信息安全。以下是对Java安全模型的详细解释&#xf…

BMC压力测试脚本

说明 对于研发阶段而言&#xff0c;需要对BMC执行压力测试&#xff0c;可以提前发现问题&#xff0c;修复问题&#xff0c;提高产品稳定性。 大体而言&#xff0c;需要做到几个方面: 1.预先发现是否会造成BMC hang机。2.进程是否会发生重启&#xff0c;运行异常3.进程是否会…

HTML 基础操作知识

1.标题标签h1--h6,逐级缩小&#xff0c;双标记&#xff0c;属性&#xff1a;对其属性align 例&#xff1a;<h1 align"center">学雷锋&#xff0c;为人民服务</h1> 2.段落标签&#xff1a;p,双标记&#xff0c;属性:对其属性align …

Java项目:100 springboot共享汽车管理系统

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本共享汽车管理系统有管理员和用户。 管理员功能有个人中心&#xff0c;用户管理&#xff0c;投放地区管理&#xff0c;汽车信息管理&#xff0c;汽车…

20分钟快速入门SQL

SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是一种专门用来管理和操作关系型数据库的编程语言。以下是SQL入门的一些基础概念和教程&#xff1a; 1. SQL基础 数据库&#xff08;Database&#xff09;&#xff1a;存储数据的集合。表&am…