当前位置: 首页 > news >正文

嵌入式C语言面试题 - 2024/11/18

欢迎找我进行职业规划,超值的自我投资 -> 嵌入式软件工程师一对一指导

转载请注明来源:


  1. 下边代码,x值是?

int x=10;x+ = 3+x%(3);

解析:

  1. 初始值:x = 10

  2. 计算 x % 3

    • 10 % 3 的结果是 1,因为 10 除以 3 的余数是 1。

  3. 计算 3 + x % 3

    • 3 + 1 的结果是 4

  4. 计算 x += 3 + x % 3

    • 相当于 x = x + 4

    • 当前的 x 是 10,所以 x = 10 + 4

  5. 最后,x 的结果是 14

因此,执行完 x+=3+x%(3); 后,x 的值是 14

2.下边代码输出结果是?

int **pp, *p, a=10, b=20;pp = &p;p = &a;p = &b;printf("%d,%d", *p, **pp)

解析:

  1. int **pp, *p, a=10, b=20;

    • pp 是一个指向指针的指针(即二级指针)。

    • p 是一个指向整型的指针(即一级指针)。

    • a 和 b 是整型变量,分别初始化为 10 和 20。

  2. pp = &p;

    • 这行代码将 p 的地址赋值给 pp。现在 pp 指向 p

  3. p = &a;

    • 这行代码将 a 的地址赋值给 p。现在 p 指向 a,因此 *p 的值是 10。

  4. p = &b;

    • 紧接着,这行代码将 b 的地址赋值给 p。现在 p 指向 b,因此 *p 的值变为 20。

    • 注意,此时 pp 仍然指向 p,但 p 的值已经改变,指向了 b 而不是 a

  5. printf("%d,%d", *p, **pp);

    • *p:由于 p 指向 b,所以 *p 的值是 b 的值,即 20。

    • **pppp 指向 p,而 p 指向 b,所以 **pp 相当于 *p,其值也是 b 的值,即 20。

因此,printf("%d,%d", *p, **pp); 的输出结果是 20,20

3.定义语句int *ptr [4];,下面等价的定义语句是?

A int ** ptr;

B int( * ptr) [4];

C int ptr[4];

D int * (ptr [4]);

解析:

在C语言中,int *ptr[4]; 定义了一个包含4个整型指针的数组。每个数组元素都是一个指向整型的指针。

A. int **ptr;

  • 这定义了一个指向指针的指针,而不是一个指针数组。因此,这与原定义不等价。

B. int (*ptr)[4];

  • 这定义了一个指向包含4个整数的数组的指针。虽然这里有括号和[4],但它并不表示一个指针数组,而是表示一个指向数组的指针。因此,这也与原定义不等价。

C. int ptr[4];

  • 这定义了一个包含4个整数的数组,而不是指针数组。因此,这与原定义不等价。

D. int *(ptr[4]);

  • 这实际上与int *ptr[4];是等价的。它定义了一个名为ptr的数组,该数组包含4个元素,每个元素都是指向整型的指针。这里的括号是可选的,因为[]的优先级高于*,所以int *ptr[4];int *(ptr[4]);表示的是同一种类型。

因此,与原定义int *ptr[4];等价的定义语句是D选项:int *(ptr[4]);

4.下边的代码,输出是多少?​​​​​​​

#include <stdio.h>
void foo(int b[][3]){     ++b;       b[1][1] = 9;}
int main(){      int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};      foo(a);       printf("%d", a[2][1]);}

解析:

在这个C语言程序中,有一个二维数组a和一个函数foo,该函数接收一个二维数组作为参数。

  1. 二维数组a被初始化为:

    1 2 3 4 5 6 7 8 9制代码

  2. main函数中,数组a被传递给函数foo。在C语言中,当二维数组作为参数传递给函数时,它实际上是通过指向其第一个元素(即第一个子数组)的指针来传递的。因此,foo函数中的参数b是一个指向包含3个整数的数组的指针。

  3. foo函数中,执行了++b;操作。这个操作使b指针指向了a的第二个子数组(即{4, 5, 6})。此时,b[0]指向{4, 5, 6}b[1]指向{7, 8, 9}

  4. 接下来,执行b[1][1] = 9;。由于b现在指向a的第二个子数组,所以b[1][1]实际上是指a[2][1](即原数组中的8所在的位置)。这行代码将a[2][1]的值更改为9。

  5. 回到main函数,执行printf("%d", a[2][1]);。由于a[2][1]的值在foo函数中被更改为9,所以输出将是9。

因此,程序的输出是9


未完待续,持续更新!

以防后边找不到可以点赞收藏下!

欢迎找我进行职业规划,超值的自我投资 -> 嵌入式软件工程师一对一指导

相关文章:

嵌入式C语言面试题 - 2024/11/18

欢迎找我进行职业规划&#xff0c;超值的自我投资 -> 嵌入式软件工程师一对一指导 转载请注明来源&#xff1a; 下边代码&#xff0c;x值是&#xff1f; int x10;x 3x%(3); 解析&#xff1a; 初始值&#xff1a;x 10 计算 x % 3&#xff1a; 10 % 3 的结果是 1&#…...

理解原子变量之四:可见性、memory_order_acquire与 memory_order_release

在理解原子变量之二&#xff1a;从volatile到内存序-进一步的认识-CSDN博客里的实例3里面&#xff0c;我们看到&#xff0c;如果在一个线程里修改原子变量done&#xff0c;另一个线程读取done时&#xff0c;就会看到这个变化。这就是原子变量的可见性。其实这个认识是不全面的。…...

requests的session

如果有cookie&#xff0c;能够自动关联&#xff0c;可以使用如下&#xff1a; session对象能够帮我们自动管理和传递cookie&#xff0c;但是后续的请求&#xff0c;必须使用session对象发起 session requests.session() re session.get() re session.post()或 session reque…...

MySQL面试题补

内连接和外连接的区别&#xff1a; ○1.功能和用法不同&#xff1a;内连接是连接两表都满足情况的数据&#xff1b;而外连接是以一边的表为主表&#xff0c;另一个表只显示匹配的行&#xff1b; ○2.用途&#xff1a;内连接一般是用于检索不同表需要根据共同的列值进行匹配的&a…...

Windows系统编程 - 进程遍历

文章目录 前言进程的遍历CreateToolhelp32SnapshotProcess32FirstProcess32Next进程遍历 总结 前言 各位师傅好&#xff0c;我是qmx_07&#xff0c;今天给大家讲解进程遍历的相关知识点 进程的遍历 快照&#xff1a;使用vmware虚拟机的时候&#xff0c;经常需要配置环境服务…...

从零开始创建一个 Vue3+Vite+TS+Eslint项目

一、创建一个最简单的 Vue3 项目 pnpm create vuelatest只设置项目名&#xff0c;其它任何功能都不加。 二、引入 Typescript 详见 Vue3 Vite 项目引入 Typescript 三、引入 Eslint Pritter 详见 Vue3 Vite TS 项目引入 Eslint Pritter 四、配置自动导入插件引入 El…...

Python操作neo4j库py2neo使用(一)

Python操作neo4j库py2neo使用&#xff08;一&#xff09; 安装&#xff08;只用于测试&#xff09; docker-compose .yml 文件 version: 3.8 services:neo4j:image: neo4j:5.6.0-enterprise #商业版镜像hostname: neo4jcontainer_name: neo4jports:- "7474:7474"-…...

Oracle - 多区间按权重取值逻辑 ,分时区-多层级-取配置方案(二)

Oracle - 多区间按权重取值逻辑 &#xff0c;分时区-多层级-取配置方案https://blog.csdn.net/shijianduan1/article/details/133386281 某业务配置表&#xff0c;按配置的时间区间及组织层级取方案&#xff0c;形成报表展示出所有部门方案的取值&#xff1b; 例如&#xff0…...

leetcode刷题记录(四十二)——101. 对称二叉树

&#xff08;一&#xff09;问题描述 . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/symmetric-tree/description/给你…...

AutoDL安装docker问题

在AutoDL上租了卡&#xff0c;安装docker遇到一些问题&#xff1a; 1.执行 sudo docker run hello-world 报错 docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 解决方法 先查看docker有没有启动&#xff0c;…...

C++头文件大全(要是还有请帮忙)

以下是 C 中常见的各类头文件分类列举&#xff08;但实际远不止这些&#xff0c;随着标准库扩充及第三方库使用会有更多&#xff09;&#xff1a; 输入 / 输出流相关头文件 <iostream>&#xff1a;用于标准输入输出&#xff0c;定义了 cin、cout 等对象。<fstream>…...

深度学习实战人脸识别

文章目录 前言一、人脸识别一般过程二、人脸检测主流算法1. MTCNN2. RetinaFace3. CenterFace4. BlazeFace5. YOLO6. SSD7. CascadeCNN 三、人脸识别主流算法1.deepface2.FaceNet3.ArcFace4.VGGFace5.DeepID 四、人脸识别系统实现0.安装教程与资源说明1. 界面采用PyQt5框架2.人…...

oracle排查长时间没提交的事务造成的阻塞案例

一 问题描述 开发同事反馈生产环境某个接口慢&#xff0c;一个普通的按主键更新的update竟然需要5分钟&#xff0c;而我手动执行秒返回&#xff0c;猜测是发生了阻塞&#xff0c;需要排查出阻塞源。 有时&#xff0c;一个事务里会包含多个sql&#xff0c;有的还包含上传附件等…...

React第七节 组件三大属性之 refs 的用法注意事项

1、定义 React 中refs 是允许我们操作DOM 访问组件实例的一种方案。开发人员可以直接使用 refs 访问操作DOM&#xff0c;而不用自身的数据状态&#xff0c;这种方案在实际开发过程中是有必要的&#xff0c;但是不建议通篇使用refs操作DOM&#xff0c;如果是这样&#xff0c;那…...

工程企业需要什么样的物资管理系统?为什么需要物资管理系统?

一、背景与意义 在工程项目的建设中&#xff0c;无论是高楼大厦的拔地而起&#xff0c;还是高速公路的绵延铺展&#xff0c;物资都是最基础的要素之一。从钢筋水泥到施工机械&#xff0c;任何一种物资的管理不善都可能导致项目延误、成本超支&#xff0c;甚至质量问题。然而&a…...

基于网页的大语言模型聊天机器人

代码功能 用户交互界面&#xff1a; 包括聊天历史显示区域和输入框&#xff0c;用户可以输入消息并发送。 消息发送和显示&#xff1a; 用户输入消息后点击“Send”按钮或按下回车键即可发送。 消息发送后显示在聊天记录中&#xff0c;并通过异步请求与后端 AI 模型通信&am…...

深入理解索引(一)

1.引言 在数据库和数据结构中&#xff0c;索引&#xff08;Index&#xff09;是一种用于提高数据检索速度的重要机制。本文将详细深入介绍索引。 2. 索引的分类 2.1 B - 树索引&#xff08;B - Tree Index&#xff09; 2.1.1 结构细节 树状结构&#xff1a;B - 树索引是一…...

动态规划子数组系列一>最长湍流子数组

1.题目&#xff1a; 解析&#xff1a; 代码&#xff1a; public int maxTurbulenceSize(int[] arr) {int n arr.length;int[] f new int[n];int[] g new int[n];for(int i 0; i < n; i)f[i] g[i] 1;int ret 1;for(int i 1; i < n-1; i,m. l.kmddsfsdafsd){int…...

MATLAB矩阵元素的修改及删除

利用等号赋值来进行修改 A ( m , n ) c A(m,n)c A(m,n)c将将矩阵第 m m m行第 n n n列的元素改为 c c c&#xff0c;如果 m m m或 n n n超出原来的行或列&#xff0c;则会自动补充行或列&#xff0c;目标元素改为要求的&#xff0c;其余为 0 0 0 A ( m ) c A(m)c A(m)c将索引…...

对 TypeScript 中函数如何更好的理解及使用?与 JavaScript 函数有哪些区别?

TypeScript 中函数的理解 在 TypeScript 中&#xff0c;函数本质上与 JavaScript 中的函数类似&#xff0c;但是它增强了类型系统的支持&#xff0c;使得我们可以对函数的参数和返回值进行更严格的类型检查。这样可以有效减少类型错误&#xff0c;提高代码的可维护性和可读性。…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...