新闻详情

新闻详情

首页 / 资讯中心 / 详情

学习嵌入式Day11:C语言之存储类型关键字和预处理命令

发布时间:2026/9/29 22:04:14来源:尧图网络
学习嵌入式Day11:C语言之存储类型关键字和预处理命令
知识回顾1.一维整型数组 做函数参数形参 --- 数组形式 数组长度实参 --- 数组名 数组长度2.一维字符型数组 做函数参数形参 --- 数组形式实参 --- 数组名注意: 一维字符型数组 主要用来存储字符串数据3.二维整型数组 做函数参数形参 --- 数组形式 行数 //本质 就是一维数组的长度实参 --- 数组名 行数4.二维字符型数组 做函数参数形参 --- 数组形式 行数 //本质 就是一维数组的长度实参 --- 数组名 行数一、标识符的作用域和可见性1.标识符的作用域定义发挥作用区域{}//C语言中一对{}就是一个作用域局部作用域只要是在{}范围内的都是局部作用域。局部作用域定义的变量称为局部变量。全局作用域不在任何一个{}范围内是全局作用域。全局作用定义的变量被称为全局变量。2.标识符的可见性定义站在程序角度看程序运行到某一时刻哪些标识符可见或可用。规则1.先定义后使用2.同一作用域中不能有同名标识符3.在不同的作用域同名标识符相互之间没有影响4.如果是不同的作用域但是作用域之间存在嵌套关系则内层的作用域的同名标识符会屏蔽外层的作用域的同名标识符。就近原则二、存储类型关键字main() { int a 10; }定义局部变量a意味着开空间。指定关键字来表示数据可以放在哪里。autoauto int a 10;//auto 表示这个变量空间开在栈上staticstatic int a 10;//static静态的表示将变量空间开在静态区静态变量的特点1.只会被初始化一次2.不能用变量初始化全局变量也不能用变量初始化全局变量和静态变量都是放在全局区静态区3.静态局部变量的值具有继承性。从变量角度看空间上局部变量、全局变量时间上生命周期局部变量从定义处开始到所在作用域结束程序执行到定义处时变量创建程序执行到作用域结束变量销毁。全局变量静态变量程序运行开始后就存在直到整个程序结束才销毁registerregister int a 10;//register寄存器告诉编译器将a存入寄存器建议性关键字register 修饰的变量不能做取地址运算因为寄存器不能取内存空间。计算机存储体系寄存器 - cache - 内存 - 硬盘容量越来越大价格越来越便宜速度越来越慢externextern int a 10;//extern外部的相当于扩展了变量的作用域将a的作用域扩展到本文件用extern修饰表示变量存储在别的文件中要使用时到别的文件中寻找。extern和staticstatic也可以是修饰全局变量表示将该变量的作用域限定为本文件别的文件中无法引用也可以修饰函数。用途分模块多个函数static保护数据作用。三、预处理命令例#include stdio.hC提供的预处理命令功能1.宏定义2.文件包含3.条件编译注意所有预处理命令都以“#”开头实际编译过程预处理将程序中的预处理命令执行完将代码处理成纯的C语言代码编译将预处理完的文件进行语法、词法分析检查问题生成一份汇编代码链接将用到的第三方代码链接成为可执行程序宏定义#define 标识符 字符串#define 宏名 宏值作用用宏名代替 一串文本信息说明1.宏名本质还是一个标识符2.宏名建议大写3.宏名是符号常量用一个符号宏名代替常量值4.宏工作的本质文本原样替换但是出现在字符串中的宏名不会被替换5.好处可以做到一改全改可以提高代码可读性带参宏#define 宏名参数表 宏值说明1.带参宏可以给一些参数2.带参宏和函数有本质的区别函数参数带类型在程序运行之后可以用带参宏参数没有类型就是文本在预处理阶段就处理完了3.带参宏工作过程本质上还是文本替代参数是一一对应的4.带参宏有副作用建议可能会改变的都加括号5.所有宏定义是以换行作为结束符四、总结今天将之前的函数学习做了结尾和总结并且学习了预处理命令作为在指针学习前的铺垫。了解了什么是局部和全局四个存储类型关键字可能是面试重点在之后的代码中也会经常用到需要重点记忆。在预处理命令中学习了宏定义和带参宏能让代码更加简洁可读性更强。明天要学习指针难度上升对之前的知识也要更加熟悉才行。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

告别繁杂环境配置,FlyEnv 一站式全栈开发工具箱,让本地开发一键起飞:TaoToken 统一 Key 接入 settings.json 配置骨架 2026/9/29 23:12:49

告别繁杂环境配置,FlyEnv 一站式全栈开发工具箱,让本地开发一键起飞:TaoToken 统一 Key 接入 settings.json 配置骨架

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

阅读更多 →
从“玩具项目“到实战高手:我的Agent开发进阶之路(附面试必备知识体系) 2026/9/29 23:12:49

从“玩具项目“到实战高手:我的Agent开发进阶之路(附面试必备知识体系)

作者分享个人Agent开发学习历程,从最初接触"玩具项目"到逐步完善为实用开发路线。核心内容围绕Agent基本概念(AgentHarnessLLM)、Harness关键模块(Prompt/内存/工具调用等)、主流框架(LangGraph/…

阅读更多 →
公寓报修管理系统-springboot + vue 2026/9/29 23:12:49

公寓报修管理系统-springboot + vue

本项目为前几天收费帮学妹做的一个项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于springboot vue的公寓报修管理系统 登录网址: http://localhost:8081/ 管理员…

阅读更多 →
忘不掉的背单词软件品牌:我用30天实测了复习间隔的对抗节奏 2026/9/29 23:12:49

忘不掉的背单词软件品牌:我用30天实测了复习间隔的对抗节奏

为什么背过的词总在第三天集体消失 先看一组我去年在三个班做的实测数据。让62名初二学生用同一份包含80个新词的清单,A组连续三天每天背一遍,B组第一天背完后隔一天再背,然后隔两天背第三次。七天后测试,A组平均记住29个&#xf…

阅读更多 →
事务里 catch 住异常继续提交:Spring Boot 3 批处理脏数据的复现与取舍 2026/9/29 23:12:48

事务里 catch 住异常继续提交:Spring Boot 3 批处理脏数据的复现与取舍

本文摘要:批处理单行失败时 catch 异常继续提交,常见结果是整批回滚或部分行脏写。三个最小复现拆开吞异常、自调用绕代理与 checked 异常不回滚三类成因。 一、问题与结论 两万行对账导入的写法是单事务内循环 INSERT,catch (RuntimeExcept…

阅读更多 →
数据平台数据清洗全攻略:工具选型、实战流程与避坑指南 2026/9/29 23:12:42

数据平台数据清洗全攻略:工具选型、实战流程与避坑指南

做数据平台的数据清洗,说实话是这个行业里最不受待见、但价值密度最高的活儿。你去看那些搜索热词,头歌flume部署、pandas数据处理、MapReduce招聘清洗、网约车Spark清洗、农产品价格清洗……表面上是五花八门的工具和场景,实际上全是同一件事…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉