嵌入式软件工程师面试题——2025校招社招通用(C/C++)(三十九)

说明:

  • 面试群,群号: 228447240
  • 面试题来源于网络书籍,公司题目以及博主原创或修改(题目大部分来源于各种公司);
  • 文中很多题目,或许大家直接编译器写完,1分钟就出结果了。但在这里博主希望每一个题目,大家都要经过认真思考,答案不重要,重要的是通过题目理解所考知识点,好应对题目更多的变化;
  • 博主与大家一起学习,一起刷题,共同进步;
  • 写文不易,麻烦给个三连!!!

前面1-15已经是C/C++,但是由于前面写的比较混乱,把八股文和题目混在了一起,所以从这一篇开始重新整理重新写,前面1-15也就可以选看了,希望多多支持!

1.指针常量、常量指针、指向常量的常量指针

答案:

1.const int* p //常量指针------>指针指向的地址的内容不可以改变

2.Int const *p //常量指针

3.Int * const p // 指针常量------>指针指向的地址可以不改变

4.const int *  const p //指向常量的常量指针------>指针指向的地址和指向的内容都不可以改变

2.使用指针的好处

答案:

1.指针可以动态分配内存

2.在链表中可以方便修改链表的节点

3.解析字符串

4.相同类型的指针可以直接复制

3.指针和引用的异同,如何转换

答案:

1.都是指针的概念,指针保存的是内存的地址引用是某块内存的别名,这个内存一旦初始化就不能再去指向别的内存

2.两者都会占用内存

区别:

  1. 指针是实体,而引用是别名
  2. 引用的本质是指针常量,指向指针的地址不可以改变,指向地址的内容可以改变
  3. 自增表示的意义不同,指针自增表示地址自增,引用表示值自增
  4. 引用必须初始化
  5. 引用不能为空
  6. sizeof(引用)得到的是所指向的变量的大小,sizeof(指针)的到的是指针大小
  7. 引用不需要解引用

转换:

  1. 指针转引用:把指针用*就可以转换成对象,可以用在引用参数当中
  2. 引用转指针:把引用类型的对象用&取地址就获得指针了

4.二维数组

答案:

int a[3][3];

1.int a[3][3];表示是个三行三列的二维数组

2.数组名表示数组首元素的地址,即第0行第0个地址

3.a+1表示地址偏移一个一维数组的地址,即三列*int大小=3*4 = 12

4.*a 表示去二维变一维,*a就相当于一维数组的数组名,比如 *a +1 表示第0行下标为1的元素地址,只是偏移一个Int地址

5.若要表示a[2][2]的元素 即 *(*(a+2)+2)  

        //解释:

        a+2表示偏移2个一维数组, 地址

        *(a+2)表示去二维变一维数组    地址

        *(*(a+2)+2) 表示在一维的基础上偏移两个元素  数值

6.a[0] + 1// 相当于一维数组移动一个int地址,比如表示a[2][2]元素 *(a[2] + 2)

对于二维字符数组的初始化

char str[][2] ={“h”,”h”};

字符二维数组的初始化不能是字符,要是字符串

5.数组初始化

答案:

对于二维数组可以

Int num[][10]  第一个[]可以不填,但是第二个必须填,但是这个数组必须初始化

对于一维数组

Int num[] 这[]可以不填但是这个数组必须初始化

总结:

数组的最左边的[]可以不填,这个时候数组必须初始化,二维数组的第二个[]必须填,不管有没有初始化

6.调用Free释放内存后,指针还能用吗

答案:

Free释放掉内存后,只是把内存的使用权就被归还给系统,内存里面的东西可能被清除也可能是垃圾值,但是指向这个内存的指针还是指向这块内存,并不会NULL。

7.函数指针

答案:

int (*pf)(int)

函数指针调用函数事注意以下几点:

  1. 函数类型必须和函数指针的类型一样,比如参数类型,返回值
  2. 给函数指针赋值是可以&也可以不要

8.指针不能加指针

答案:

指针之间可以做减法,但不能做加法。

9.空指针的指向哪里

答案:

空指针是指指向地址为0的地方。

10.数组声明和引用的下标

答案:

声明下标只能是常量;

引用下标可以是整形常量,整形表达式,整形变量。

11.预处理器标识#error的目的是什么?

答案:

编译程序时,只要遇到#error就会生成一个编译错误提醒,并且停止编译。

语法格式:

        #error error-message

实例:

#ifdef xxx
#error “xxx has been defined”
#else
#endif

12.头文件中 #ifndef  #define  #endif

答案:

当项目中有多个c文件使用到同一个头文件是,在编译的时候会出现大量的变量,函数声明冲突,解决就是使用。

#ifndef _HEAR_H_
#define _HEAR_H_
#endif

说可以是自由命名的,但每个头文件的这个"标识"都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的 "." 也变成下划线,如stdio.h。

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

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

相关文章

C语言实现“空心”正方形图案输出的程序解析

我们可以利用循环结构和条件判断语句来绘制各种图形。下面&#xff0c;我将对一个通过while循环和嵌套for循环实现“空心”正方形输出的C语言代码进行详细解析。 #include <stdio.h>int main() {int a;while (scanf("%d", &a) ! EOF) { // 输入循环&#…

Unknown encoder ‘libmp3lame

环境&#xff1a; macos m1 &#xff0c; python3.10.x 背景 做视频切片&#xff0c; 使用moviepy 中VideoFileClip进行截取视频。 报错&#xff1a; Unknown encoder libmp3lameThe audio export failed because FFMPEG didnt find the specified codec for audio encoding …

【ARMv8M Cortex-M33 系列 7 -- RA4M2 移植 RT-Thread 问题总结】

请阅读【嵌入式开发学习必备专栏 】 文章目录 问题小结栈未对齐 经过几天的调试&#xff0c;成功将rt-thead 移植到 RA4M2&#xff08;Cortex-M33 核&#xff09;上&#xff0c;thread 和 shell 命令已经都成功支持。 问题小结 在完成 rt-thread 代码 Makefile 编译系统搭建…

Django开发_19_form表单前后端关联(1)

实例分析&#xff0c;过程使用URL反向解析知识&#xff1a; Django开发_12_URL反向解析、重定向-CSDN博客y 一、实例代码 (一)主路由urls.py: path("work4/", include("work4_app.urls",namespace"work4")), (二)app内urls.py: from djang…

利用大数据靶向肿瘤细胞的基因突变

在亚利桑那健康科学大学&#xff0c;研究人员正在应用大量数据&#xff0c;试图更多地了解这种突变、其变异以及任何可能有助于他们治疗患者的相关因素。 癌症的潜在原因很多&#xff0c;从食物和环境到创伤和感染。在遗传学方面&#xff0c;研究人员发现&#xff0c;有一种基因…

uniapp app更新

uniapp app更新 这个版本要随之增加&#xff0c;不然刚更新时直接用app, 新包增加的那些页面跳转会有问题&#xff0c;不能跳新的页面 //app更新检测 updataApp(){const that this;uni.showLoading({title:加载中...})plus.runtime.getProperty(plus.runtime.appid, functio…

Centos7.6之禅道开源版17.6.1安装记录

Centos7.6之禅道开源版17.6.1安装记录 文章目录 Centos7.6之禅道开源版17.6.1安装记录1. 下载2. 安装3. 登录4. 连接数据库1. 本地连接2. 远程连接1. 开启远程访问用户2. 更改mysql绑定的主机3. 重启Apache与MySQL服务 4. 常用命令1. Apache和Mysql常用命令2. 其他 1. 下载 官网…

C语言中的extern:全局变量和函数的声明与使用

概念&#xff1a; 在C语言中&#xff0c;extern是一个关键字&#xff0c;用于声明全局变量和函数。它告诉编译器该变量或函数在其他源文件中定义&#xff0c;让编译器知道在链接时需要从其他源文件中寻找其定义。extern关键字不会分配内存&#xff0c;只是告诉编译器该变量或函…

归并排序-逆序对

之前的文章里有写归并排序的最小和问题&#xff08;归并排序-最小和-CSDN博客&#xff09;&#xff0c;逆序对问题其实跟最小和问题的本质一样&#xff1a; 逆序对&#xff1a;给定一个数据&#xff0c;从左往右&#xff0c;从第一个数开始&#xff0c;它右边每一个比它小的都…

解密:消息中间件的选择与使用:打造高效通信枢纽

目录 第一章&#xff1a;消息中间件介绍 1.1 什么是消息中间件 1.2 消息中间件的作用 1.3 消息中间件的分类 第二章&#xff1a;消息中间件的选择标准 2.1 性能 2.2 可靠性 2.3 可扩展性 2.4 易用性 2.5 社区支持 2.6 成本 第三章&#xff1a;常见的消息中间件对比…

解决 [Vue warn]:Avoid mutating a prop directly 警告

错误信息 [Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop’s value. Prop being mutated: “xxx” 错误原因 所有的 prop 都使得…

图像分割的作用以及运用领域

图像分割 图像分割是数字图像处理领域的一种技术&#xff0c;其主要目的是将数字图像划分成多个部分或区域&#xff0c;以便于更简单、有效地分析和理解图像内容。在图像分割过程中&#xff0c;图像被分解成若干互不重叠的区域&#xff0c;这些区域通常对应于实际场景中的各种…

推荐几款AI绘图软件且提供psd源文件

AI绘图软件通常指的是支持人工智能辅助创作的绘图和设计工具&#xff0c;能够帮助用户更高效地进行图像、插画和设计工作。以下是一些具有AI功能且可以导出或处理PSD格式文件&#xff08;即Photoshop源文件格式&#xff09;的软件&#xff1a; Adobe Photoshop Adobe Photoshop…

Prometheus配置与管理

1 配置文件 Prometheus通过命令行和配置文件进行配置&#xff0c;命令行配置不能修改的系统参数&#xff08;例如存储位置&#xff0c;要保留在磁盘和内存中的数据量等&#xff09;&#xff0c;但配置文件定义了与抓取作业及其实例相关的所有内容&#xff0c;以及哪些规则文件…

2024阿里云优惠,云服务器61元一年起

2024年最新阿里云主机价格&#xff0c;最低配置2核2G3M起步&#xff0c;只要61元一年&#xff0c;还可以在阿里云CLUB中心领券 aliyun.club 专用满减优惠券。 1、云服务器ECS经济型e实例2核2G、3M固定带宽99元一年 2、轻量应用服务器2核2G3M带宽轻量服务器一年61元 3、阿里云轻…

ECMAScript日常总结--ES2019(ES10)

ECMAScript日常总结–ES2019(ES10) 文章目录 ECMAScript日常总结--ES2019(ES10)1. Object.fromEntries() -- 将键值对的列表转换为对象2. Array.prototype.flat() -- 用于将嵌套数组&#xff08;多维数组&#xff09;扁平化为一维数组3. String.prototype.trimStart() 和 Strin…

蓝桥杯备战——3.定时器前后台

1.STC15F2k61S2的定时器 阅读STC15系列的手册&#xff0c;我们可以看到跟STC89C52RC的定时器还是有不同之处的&#xff1a; 由上图可以看到我们可以通过AUXR寄存器直接设置定时器的1T/12T模式了 在定时器0/1模式上也可以设置为16位自动重装载。 另外需要注意IAP15F2K61S2只有…

使用 SpringBoot 读取 YAML 文件并将数据转为 Map,在嵌套 Map 中递归获取指定层级下的所有数据

文章目录 引入认识 YAML 格式规范定义脱敏规则格式主要逻辑实现优化方法完整工具类 引入 在项目中遇到一个需求&#xff0c;需要对交易接口返回结果中的指定字段进行脱敏操作&#xff0c;但又不能使用AOP注解的形式&#xff0c;于是决定使用一种比较笨的方法&#xff1a; 首先…

nvm安装的node,脚手架安装 vue 项目时报错

npm install -g vue/cli 时报错 解决办法 //修改npm的资源镜像: npm config set registry http://registry.npm.taobao.org重新脚手架安装 npm install -g vue/cli成功到下一步&#xff0c;当执行&#xff1a;vue create my-vue-demo时又报新的错 原因&#xff1a;【HTTPS …

part2. jdk9/10/11/12/16新特性详解

1.jdk9 1.1 模块化机制 定义模块&#xff1a;module-info.java module com.newfeature.test {requires java.se;requires lombok;requires junit; }package com.newfeature.test;import java.lang.reflect.Field;public class Main {public static void main(String[] args) …