C语言:变量三属性——存储类型

发布时间:2026/10/2 17:10:28

C语言:变量三属性——存储类型 C语言变量具有三属性类型作用范围、存储类别。存储类别1、auto类别1.1、auto类别的变量使用完后释放所占用空间。auto类别 临时变量1.2、局部变量默认为auto类别无初始化时初值为随机值。局部变量不是所有变量不给初值并不意味着变量没有值实际上是有的而且是随机值。1.3、使用时间短一般都是auto类别的变量。2、static类别2.1、static类别从定义到程序运行结束均占用存储空间。占用时间比auto长。2.2、全局变量默认为static类别无初始化时初值为0。2.3、static类别变量只进行一次初始化。案例1//09-6--001 #include stdio.h int fun(int x, int y) { static int m 0,i 2;//静态变量static i m 1; m i x y; return m; } main() { int j 4, m 1, k; k fun(j, m); printf(%d, k); k fun(j, m); printf(%d, k); }该案例是一个复合框架由一个子函数fun()和一个主函数main()组成。主函数调用子函数两次。从主函数main开始执行定义了3个局部变量j4,m1,k为随机值。接着开始调用子函数函数出门出门时单向传值将j4与m1传至子函数。因此x4,y1继续执行子函数fun()定义了两个静态变量分别是m0,i2静态变量只做一次初始化所以原代码中我们定义好m和i后那一句带static的话就没有用了。继续往下im1是先算m1,放到i里再进行累加。那么i此时i21i3。继续往下mixy其中i3,x4,y1,所以m8。继续往下return m带着m的值返回所哟就带着8返回了。回到主函数原本调用的位置继续运行kfun(j,m)8这个值给了fun()所以fun()8所以k8继续运行打印k的值输出打印8光标在8后。继续运行再次调用子函数函数出门出门时单向传值再次将j4与m1传至子函数。再次运行一遍子函数但是前面已经用过一次static语句了第二次再用就会跳过static语句注意注意此时m的值就不是static初始化的0了i的值也不是初始化的2了而是沿用上一次留下来的数据m8,i3继续使用。继续往下运行im1是先算m1,放到i里再进行累加。m18,819,此时就把9累加进i里i9312i变成12.继续往下运行mixyi12,x4,y1,所以此时m17。继续往下return m那么就带着17回主函数了。回到主函数kfun(),带回来的值是1717这个值给了fun()所以fun()17所以k17继续运行打印k的值输出打印17光标在17后。分析结束所以最后的输出框输出的应该是817。我们上机看一下最终的效果重点体会static变量第一次调用和第二次调用之间的区别。认真体会“static类别变量只进行一次初始化”在代码中的具体体现。案例2//09-6--002 #include stdio.h int d 1; fun(int p) { static int d 5;//静态变量static d p; printf(%d, d); return (d); } main() { int a 3; printf(%d\n, fun(afun(d))); }代码开头有一个d是全局变量。但是在子函数内也有一个d是static变量只做一次初始化。在主函数内也出现了一个d那么这个d就应该是全局变量d因为子函数内的d的作用范围只在子函数内。因此主函数内的fun(d),其中的d1。开始分析。这是个包括一个子函数和一个主函数的复合框架。子函数在上无需声明。在主函数内调用子函数两次。最后printf。fun()子函数前没有规定类型那fun()返回什么类型应该是默认返回Int类型int类型即非void类型一定要加return。从主函数进入开始执行首先定义了一个a3接下来在printf语句内开始两次调用fun()函数先调用内层的函数fun(d)我们已知d1调用完内层的函数会返回一个值来与前面的a相加继续计算再进行一次调用。好那么开始调用fun(d)函数出门前往fun()单向传值那么p1。继续往下static int d5单次初始化那么d此时被初始化为5d5初始化结束后static语句失效。继续往下dp将p的值累加进d后再赋值给d所以此时d的值被更新为6printf语句输出d的值即输出一个6。继续往下return语句带着d的值d6返回原先调用的地方。回到主函数fun(d),带回来的值是66这个值给了fun()所以fun(d)6带入前面的式子那么变成了fun(a6)。又因为原a3所以fun(9)将会再调用一次fun这次带入的值是9。好那么开始调用fun(9)函数出门前往fun()单向传值那么p9。继续往下static语句已经失效了忽略不看直接运行dp此时将p的值累加进d后再赋值给dp9,d6d的值沿用上一次调用留下来的值所以此时d的值被更新为15。继续往下打印d的值所以打印15。继续往下带着15这个值回到原先调用的主函数的地方。回到主函数那么此时fun(a6)的值已被更新为15。printf语句打印15且换行。分析结束所以最终应该输出61515回车光标在下一行开头。我们上机看一下最终的效果重点体会static变量第一次调用和第二次调用之间的区别。认真体会“static类别变量只进行一次初始化”在代码中的具体体现。3、register类别寄存器类别3.1、register类别变量只能是局部变量才能被说明。3.2、register类别变量一般不能直接使用。4、extern类别4.1、extern类别变量可以加大变量的作用范围外部。案例3//09-6--003 #include stdio.h main() { printf(%d,%d\n, x, y); } int x, y;可以看到本案例希望可以实现输出x和y但是代码实际上是先使用再定义原本c语言中应该先定义后使用所以在编译是就会提醒未声明。但是我们代码末尾有定义呀那么我们就可以通过extern来加大x和y的作用范围。增加语句extern x,y;增加句子之后程序正常运行。4.2、格式说明格式1auto、static、register只能使用格式1定义的同时说明类别存储类型 类型名 变量名eg:auto int x;-----auto可省略static int x;-----YES格式2extern可以用格式1也可以用格式2分别定义说明类型名 变量名存储类型 变量名eg:extern int x;或者 int x;extern x;学习过程有诸多不足之处欢迎来私信与我一同交流学习共同进步
延伸阅读

更多相关文章

2026/9/26 20:11:26

企业做ISO认证最容易踩的5个坑,第3条90%都中招了

摘要:本文针对初次接触ISO认证的企业管理者与质量负责人,系统梳理ISO9001、ISO14001、ISO45001三体系的核心概念、行业适配重点、从准备到获证的全流程关键节点,以及90%企业都会踩的五大误区,帮助读者少走弯路、高效拿证、让体系真…

2026/10/1 3:44:23

法律AI问答工具怎么选?实测国内几款法律工具后的务实推荐

这两年法律AI工具确实越来越多。以前遇到法律问题,我们习惯先搜法条、搜案例,再自己一点点判断;现在不少法律AI已经可以直接用自然语言提问,比如“公司拖欠工资应该怎么处理”“合同里约定的违约金过高怎么办”“这个案件有没有类…

2026/9/27 23:13:27

初始Qt——了解Qt背景

1. 开发GUI的各种技术方案Windows下开发GUI的方案: 1. Windows API ——Windows系统提供的原生API,但是开发起来非常原始和繁琐2. MFC ——将Windows API封装出来一些类来开发,提供了新的开发思路,更加便捷,但是现在已…

2026/10/2 17:08:45

dots模型选型指南:如何用--model在OpenRouter自由切换AI大脑

dots模型选型指南:如何用--model在OpenRouter自由切换AI大脑 【免费下载链接】dots Open-source dots for the web: an AI agent with its own browser, one that does not get blocked. 项目地址: https://gitcode.com/gh_mirrors/dots140/dots dots 是一个…

2026/10/2 17:08:45

体育旅游毕业论文想“AI搭把手”?先看这张工具选择地图

如果你是体育旅游专业的学生,大概率会遇到这样一个毕业任务:以某项赛事、户外运动目的地或民族体育旅游活动为对象,完成一篇类似《“村超”赛事旅游对目的地形象与游客重游意愿的影响研究》的毕业论文。 这篇论文不是简单写写观赛感受&#…

2026/10/2 17:03:45

又一 VSCode 神器诞生!用 Foam 把 Markdown 笔记发布到 GitHub Pages

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 8:16:46

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/10/1 17:09:46

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 10:48:55

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/2 0:02:57

PWN入门:从栈溢出原理到ROP链实战

1. 这不是“学PWN”,是重新理解你每天敲的每一行C代码我第一次在CTF赛场上写出能控制程序流的exp时,手抖得连gdb的c命令都输错三次。那道题只有23行C代码,一个gets()调用,一个printf(),一个return——它甚至没开NX&…

2026/10/2 0:02:57

Windows下cudaMallocHost显存占用之谜:WDDM与TCC模式差异及优化方案

1. 一个反直觉的显存占用现象第一次在 Windows 上看到cudaMallocHost把显存吃掉的时候,我的反应是打开任务管理器反复确认了三遍。明明调用的是主机端锁页内存分配,按 CUDA 文档的说法,这块内存应该落在系统 RAM 里,跟 GPU 的显存…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑