【C语言基础】嵌入式面试经典题(C语言篇)----有新的内容会及时补充、更新!

news2024/11/16 10:19:21

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

文章目录

  • 进程和线程有什么区别?
  • 程序的局部、全局变量存在于哪里,动态申请数据存在于哪里?
  • 静态局部变量和全局变量的区别
  • 关键字const有什么作用?
  • 关键字static有什么作用?
  • 局部变量能否和全局变量重名?
  • Union和结构体之间的区别
  • 什么是指针?
  • 栈和堆的区别?
  • 什么是内存泄漏?
  • 单片机程序跑飞是什么意思?
  • 描述一下C语言从代码到可执行程序的过程


进程和线程有什么区别?

答:进程是并发执行的程序在执行过程中分配和管理资源的基本单位。线程是进程的一个执行单元,是比进程还要小的独立运行的基本单位。一个程序至少有一个进程,一个进程至少有一个线程。

程序的局部、全局变量存在于哪里,动态申请数据存在于哪里?

答:程序的局部变量存在于栈区;全局变量存在于静态区;动态申请数据存在于堆区。

静态局部变量和全局变量的区别

答:静态局部变量的这种特性,和全局变量非常相似。他们的相同点都是创造和初始化一次,以后调用时值保持上次的不变。不同点在于作用域不同。

关键字const有什么作用?

答:用const定义的变量的值是不允许改变的,即不允许给它重新赋值,即使是赋相同的值也不可以。所以说它定义的是只读变量,这也就意味着必须在定义的时候就给它赋初值。

关键字static有什么作用?

答:在C语言中,关键字static有三个明显的作用:

  1. 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
  2. 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
  3. 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。

局部变量能否和全局变量重名?

答:能,局部会屏蔽全局。
局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。
对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。

Union和结构体之间的区别

答:结构体类似于一个包裹,结构体中的成员彼此是独立存在的,分布在内存的不同单元中,他们只是被打包成一个整体叫做结构体而已;共用体中的各个成员其实是一体的,彼此不独立,他们使用同一个内存单元。可以理解为:有时候是这个元素,有时候是那个元素。更准确的说法是同一个内存空间有多种解释方式。

什么是指针?

答:指针的实质就是个变量,它跟普通变量没有任何本质区别。指针完整的名字应该叫指针变量,简称为指针。指针的出现是为了实现CPU间接访问内存地址。

栈和堆的区别?

答:栈区别于堆,它是自主管理内存的;堆管理内存分配灵活,按需分配,也就是程序手动申请&释放:手工意思是需要写代码去申请malloc和释放free。各进程可以按需申请使用,使用完释放。大的进程放入到堆内存中,小的进程放入栈中,两种的特征决定了处理不同的进程。
1.申请方式不同。栈的空间由操作系统自己分配和释放,堆上的空间手动分配和释放。
2.申请效率不同。栈由系统自动分配,速度较快,但程序员是无法控制的。堆是由new分配的内存,一般速度较慢,而且容易产生内存碎片,不过用起来最方便。
3.申请大小不同。栈空间有限。在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小
堆是很大的自由存储区。堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。

什么是内存泄漏?

答:在调用free归还(释放)这段内存之前,指向这段内存的指针p一定不能丢(也就是不能给p另外赋值)。因为p一旦丢失,这段malloc申请来的内存就永远的丢失了(内存泄漏),直到当前程序结束时操作系统才会回收这段内存。

单片机程序跑飞是什么意思?

答:"单片机程序跑飞"是指由于某些异常情况,使得单片机的程序执行流程脱离预设的正常路径,导致系统运行不正常。这种现象可能有多种表现,例如:单片机系统不停地重启,无法进入正常工作状态。

一个常见的原因是数组越界(数组溢出),即函数中定义的数组元素的个数小于程序中实际使用的数组元素的个数。另一个可能的原因是外部干扰,比如电磁干扰等,这可能导致程序计数器PC的值发生非预期的变化,从而使程序的流向指向不确定区域。

描述一下C语言从代码到可执行程序的过程

答:一个C语言程序,从代码到可执行程序的过程需要四个步骤:预处理,编译 ,汇编,链接。

1.预处理
预处理负责对源代码进行文本处理。主要处理代码中以字符#开头的命令。
2. 编译
编译期间也要经过多个步骤,由.i的文本文件生成.s的文本文件。此文件为以汇编语句完成的代码
3.汇编
经过汇编阶段把汇编语句转换为机器指令,由.s的文本文件生成.o的二进制文件。
4.链接
链接器将所有二进制的目标文件和系统组件组合成一个可执行文件(.exe)。 (需要注意的是,我们在编译器是针对源文件进行编译的并且每个源文件都只会编译一次,所以汇编结束后每个源文件都会生成一个.o文件,这里的目标文件就是这些.o文件。)

在这里插入图片描述

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

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

相关文章

WorkPlus即时通讯app,支持私有化部署的企业IM

当企业面临复杂的协同、业务和生态场景时,多个繁琐的应用和系统常常让员工头疼不已。然而,WorkPlus作为企业数字化转型的超级APP,以其一站式全能解决方案,为企业带来了颠覆性的便利与高效。本文将深入探讨WorkPlus的特点和优势&am…

JavaScript系列-数据类型

ES6变量类型 JavaScript编程语言中,变量类型分为基本变量类型和引用类型,两种变量类型的区别在于 基本类型变量值存放于栈中,引用类型变量值存放于堆中基本类型赋值给其他变量,是将其值复制过去引用类型赋值给其他变量&#xff…

MyString:string类的模拟实现 1

MyString:string类的模拟实现 前言: 为了区分标准库中的string,避免编译冲突,使用命名空间 MyString。 namespace MyString {class string{private:char* _str;size_t _size;size_t _capacity;const static size_t npos -1;// C标…

解锁MySQL的威力:针对常见问题的快速解决指南

数据库和表的创建 创建数据库: CREATE DATABASE IF NOT EXISTS MyDatabase; USE MyDatabase;案例: 想象您要开始一个博客项目。首先,您需要一个地方来存储所有的文章和用户信息。上述命令帮助您创建了这样一个存储空间,名为MyDa…

人力资源服务展示网站作用有哪些

就业劳务问题往往是不少人群关注的问题,每个城市都聚集着大量求业者,而人力资源管理公司每年也会新增不少,对求业者来说,通过人力资源公司可以快速便捷的找到所需工作,而对公司来说,市场大量用户可以带来收…

python/matlab图像去雾/去雨综述

图像去雾和去雨是计算机视觉领域的两个重要任务,旨在提高图像质量和可视化效果。本文将综述图像去雾和去雨的算法、理论以及相关项目代码示例。 一、图像去雾算法 基于暗通道先验的方法: 这是广泛应用于图像去雾的经典算法之一。该方法基于一个观察&…

Aloha 机械臂的学习记录2——AWE:AWE + ACT

继续下一个阶段: Train policy python act/imitate_episodes.py \ --task_name [TASK] \ --ckpt_dir data/outputs/act_ckpt/[TASK]_waypoint \ --policy_class ACT --kl_weight 10 --chunk_size 50 --hidden_dim 512 --batch_size 8 --dim_feedforward 3200 \ --n…

操作系统学习笔记---内存管理

目录 概念 功能 内存空间的分配和回收 地址转换 逻辑地址(相对地址) 物理地址(绝对地址) 内存空间的扩充 内存共享 存储保护 方式 源程序变为可执行程序步骤 链接方式 装入方式 覆盖 交换 连续分配管理方式 单一连…

self-attention|李宏毅机器学习21年

来源:https://www.bilibili.com/video/BV1Bb4y1L7FT?p1&vd_sourcef66cebc7ed6819c67fca9b4fa3785d39 文章目录 引言self-attention运作机制b1是如何产生的怎么求关联性数值 α \alpha α 从矩阵乘法的角度再来一次从A得到Q、K、V从Q、K得到 α \alpha α矩阵由…

IT行业最被低估的六项技术,再加上一项尚未消亡的技术

2023年,生成式人工智能——更具体地说是ChatGPT——吸引了业界的广泛关注,深得董事会、首席执行官和其他高管的一致赞赏(也不乏害怕情绪)。当然,他们的热情是有道理的,多项研究发现,人工智能正在…

Nginx缓存及HTTPS配置小记

缓存基础 缓存分类 某些场景下,Nginx需要通过worker到上有服务中获取数据并将结果响应给客户端,在高并发场景下,我们完全可以将这些数据视为热点数据,并将其缓存到Nginx服务上。 客户端缓存:将缓存数据放到客户端。 …

Linux和Windows环境下如何使用gitee?

1. Linux 1.1 创建远程仓库 1.2 安装git sudo yum install -y git 1.3 克隆远程仓库到本地 git clone 地址 1.4 将文件添加到git的暂存区(git三板斧之add) git add 文件名 # 将指定文件添加到git的暂存区 git add . # 添加新文件和修改过的…

DTCC2023大会-DBdoctor-基于eBPF观测数据库-附所有PPT下载链接

DTCC2023大会-DBdoctor-基于eBPF观测数据库-附所有PPT下载链接 8月16日—18日,第14届中国数据库技术大会(DTCC-2023)在北京国际会议中心举行。聚好看在大会上首次发布基于eBPF观测数据库性能的产品DBdoctor,受到了业界广泛的关注。近期几位业内同仁过来要大会的PPT…

NLP项目实战01--电影评论分类

介绍: 欢迎来到本篇文章!在这里,我们将探讨一个常见而重要的自然语言处理任务——文本分类。具体而言,我们将关注情感分析任务,即通过分析电影评论的情感来判断评论是正面的、负面的。 展示: 训练展示如下…

消息队列使用指南

介绍 消息队列是一种常用的应用程序间通信方法,可以用来在不同应用程序或组件之间传递数据或消息。消息队列就像一个缓冲区,接收来自发送方的消息,并存储在队列中,等待接收方从队列中取出并处理。 在分布式系统中,消…

Git的安装以及SSH配置

前言 近期工作需要,所以版本管理工具要用到Git,某些操作需要ssh进行操作,在某次操作中遇到:git bash报错:Permission denied, please try again。经排查是ssh没有配置我的key,所以就借着这篇文章整理了一下…

【小白专用】使用PHP创建和操作MySQL数据库,数据表

php数据库操作 php连接mysql数据库 <?php $hostlocalhost; // 数据库主机名 $username"root"; // 数据库用户名 $password"al6"; // 数据库密码 $dbname"mysql"; // 数据库名 $connIDmysqli_connect($host,$username,$password,$dbn…

Electron[4] Electron最简单的打包实践

1 背景 前面三篇已经完成通过Electron搭建的最简单的HelloWorld应用了&#xff0c;虽然这个应用还没添加任何实质的功能&#xff0c;但是用来作为打包的案例&#xff0c;足矣。下面再分享下通过Electron-forge来将应用打包成安装包。 2 依赖 在Electron[2] Electron使用准备…

AXURE地图获取方法

AXURE地图截取地址 https://axhub.im/maps/ 1、点击上方地图或筛选所需地区的地图&#xff0c;点击复制到 Axure 按钮&#xff0c;到 Axure 粘贴就可以了 2、复制到 Axure 后&#xff0c;转化为 svg 图形&#xff0c;就可以随意更改尺寸/颜色/边框&#xff0c;具体操作如下&am…

RocketMQ-源码架构二

梳理一些比较完整&#xff0c;比较复杂的业务线 消息持久化设计 RocketMQ的持久化文件结构 消息持久化也就是将内存中的消息写入到本地磁盘的过程。而磁盘IO操作通常是一个很耗性能&#xff0c;很慢的操作&#xff0c;所以&#xff0c;对消息持久化机制的设计&#xff0c;是…