嵌入式C语言面试题笔试题

一、常见的关键词:sizeof(strlen)、static、const、volatitle(会持续更新)

1、sizeof和strlen的区别

(1)sizeof是求数据类型所占空间的大小,是一个操作符,在编译时计算出结果。

(2)Strlen是求以\0结尾的字符串的实际长度,是一个函数,在运行时才运算出结果,使用strlen求长度时候要进行初始化。

2、static通过被问作用,以及在程序中有两个陷阱需要注意:函数中static修饰局部变量和static修饰全局变量

(1)static定义的全局变量只能在本文件中使用

(2)加了static的局部变量会延长其生命周期,存在于整个程序的执行过程。但是其他函数无法使用。

(3)static函数只会在该模块中可见

3、const通常考察作用

(1)通常是定义常量

(2)修饰函数参数 返回值,被修饰的东西会被保护起来,不会改变。

4、volatile通常考察作用和使用环境

Volatile修饰的变量说明该变量的值会随时发生变化的,每次用的时候需要从存储该变量的地址中直接获取。

(1)中断服务程序中修改的供其他程序检测的变量需要加Volatile。

(2)多任务环境下个任务间共享的标志位需要加Volatile。

(3)存储器映射的硬件寄存器通常也要加Volatile。

5、extern:extern标识的变量或者函数声明定义在别的文件中,提示编译器遇到此变量和函数时候在其他模块中寻找其定义。

extern和typedef的不同在于:

(1)typedef是用来定义一种数据类型的别名,增强程序的可读性。而define主要是用来定义常量,以及书写复杂和使用频繁的宏定义。

(2)执行时间不同:typedef是编译过程的一部分,有类型检查的功能。define是宏定义,是预编译的部分,其发生在编译之前。

(3)作用域不同:typedef有作用域限定。define不受作用域约束,只要是在define声明后的引用都是正确的。

(4)对指针的操作不同:typedef和define定义的指针时有很大的区别。

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

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

相关文章

系统架构设计师【补充知识】: 专业英语 (核心总结)

系统架构设计师考试英文试题的出题范围基本局限于系统架构设计方面基础性的、概念性的知识,大多属于名词解释范畴。 一、架构风格 An architectural style defines as a family of such systems in terms of a pattern of structural organization. More specific…

用QT6、QML、FFMPEG写一个有快进功能的影音播放程序

程序如图: 开发环境在ubuntu下,如果改windows下,也就改一下cmakelists.txt。windows下如何配置ffmpeg以前的文章有写,不再重复。 源程序如下: GitHub - wangz1155/ffmpegAudioThread: 用qt6,qml&#xff…

SpringBoot+Vue甘肃非物质文化网站(前后端分离)

技术栈 JavaSpringBootMavenMySQLMyBatisVueShiroElement-UI 系统角色对应功能 用户管理员 系统功能截图

HTTP-web服务器

web服务器 web服务器实现了http和相关的tcp连接处理,负责管理web服务器提供的资源,以及对服务器的配置,控制以及拓展等方面的管理 web服务器逻辑实现了http协议,并负责提供web服务器的管理功能,web服务器逻辑和操作系…

用幻灯片讲解内存分配器Allocator

用幻灯片讲解内存分配器Allocators Allocators 分配器 提供内存分配策略的通用接口委托给 C 运行时:new / delete块内存池不同大小的块内存池 为什么用分配器? 将容器逻辑与内存分配策略解耦速度:内存分配速度慢确保有足够的内存可用确保所需的内…

C语言详解(动态内存管理)2

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…

7-16 二分查找

7-16 二分查找 分数 25 全屏浏览 切换布局 作者 李廷元 单位 中国民用航空飞行学院 请实现有重复数字的有序数组的二分查找。 输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。 输入格式: 输入第一行有两个…

配网终端通讯管理板,稳控装置通讯管理卡,铁路信号通讯管理卡

配网终端通讯管理板 ● 配网终端通讯管理板 ● ARM Cortex™-A5 ,533MHz ● 256MB RAM,512MB FLASH 配网终端通讯管理板 ARM Cortex™-A5 ,533MHz 256MB RAM,512MB FLASH 2x10/100/1000Mbps LAN(RJ45) 6x…

B3958 [GESP202403 四级] 相似字符串

[GESP202403 四级] 相似字符串 题目描述 对于两个字符串 A A A 和 B B B,如果 A A A 可以通过删除一个字符,或插入一个字符,或修改一个字符变成 B B B,那么我们说 A A A 和 B B B 是相似的。 比如 apple \texttt{apple}…

Redis 内存回收

文章目录 1. 过期key处理1.1 惰性删除1.2 周期删除 2. 内存淘汰策略 Redis 中数据过期策略采用定期删除惰性删除策略结合起来,以及采用淘汰策略来兜底。 定期删除策略:Redis 启用一个定时器定时监视所有的 key,判断key是否过期,过…

深入理解Java多态:灵活性与可扩展性的完美结合

多态(Polymorphism)是面向对象编程(Object-Oriented Programming, OOP)的核心概念之一。多态性允许一个接口或方法适用于不同的对象类型,从而实现代码的重用性和灵活性。本文将深入探讨Java中的多态性,包含…

【JavaScript脚本宇宙】探索JavaScript拖放库世界:特性、示例与应用场景

解锁JavaScript拖放神器:库特性对比及最佳实践分享 前言 JavaScript拖放库在现代Web开发中扮演着重要角色,为用户提供了直观的交互体验。从基本的拖拽功能到复杂的多点触控手势,这些库使开发人员能够轻松地实现各种拖放效果,为网…

如何使用Python中的os模块进行文件和目录操作

Python中的os模块提供了许多与操作系统交互的函数,包括文件和目录操作。以下是一些使用os模块进行文件和目录操作的基本示例: 1. 获取当前工作目录 python复制代码 import os current_dir os.getcwd() print(current_dir) 2. 改变当前工作目录 pytho…

Linux安装Qt5.14.2

下载 qt 5.14.2下载网址 下载qt-opensource-linux-x64-5.14.2.run Linux系统下载.run文件(runfile文件),windows系统下载.exe文件,mac系统下载.dmg文件。 md5sums.txt中是各个文件对应的MD5校验码。 验证MD5校验码 md5sum是li…

简单使用phpqrcode 生成二维码图片

$path ROOT_PATH; //tp项目根路径 require_once $path.vendor/phpqrcode/phpqrcode.php; //加载phpqrcode库 $url http://.$_SERVER[HTTP_HOST]./home/index/detail?id.$param[id]; $value $url; //二维码内容 $errorCorrectionLevel L; //容错级别 $mat…

Elasticsearch之深入聚合查询

1、正排索引 1.1 正排索引(doc values )和倒排索引 概念:从广义来说,doc values 本质上是一个序列化的 列式存储 。列式存储 适用于聚合、排序、脚本等操作,所有的数字、地理坐标、日期、IP 和不分词( no…

指针(初阶1)

一.指针是什么 通俗的讲,指针就是地址,其存在的意义就像宾馆房间的序号一样是为了更好的管理空间。 如下图: 如上图所示,指针就是指向内存中的一块空间,也就相当于地址 二.一个指针的大小是多少 之前我们学习过&#x…

面试专区|【43道Java多线程高频题整理(附答案背诵版)】

请说一下进程和线程的区别? 进程和线程都是操作系统进行任务管理的基本单位,但它们之间存在一些关键的区别。 独立性:进程是操作系统分配资源(如CPU时间、内存空间等)的基本单位,它是相互独立的,一个进程…

数据结构之ArrayList与顺序表(下)

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏:数据结构(Java版) 目录 ArrayList的具体使用 118. 杨辉三角 扑克洗牌算法 接上篇:数据结构之ArrayLis…

【环境搭建】2.阿里云ECS服务器 安装MySQL

在阿里云的 Alibaba Cloud Linux 3.2104 LTS 64位系统上安装 MySQL 8,可以按照以下步骤进行: 1.更新系统软件包: 首先,更新系统软件包以确保所有软件包都是最新的: sudo yum update -y2.下载 MySQL 8 官方 Yum 仓库…