嵌入式C语言面试题 - 2024/11/18
欢迎找我进行职业规划,超值的自我投资 -> 嵌入式软件工程师一对一指导
转载请注明来源:
-
下边代码,x值是?
int x=10;
x+ = 3+x%(3);
解析:
-
初始值:
x = 10
-
计算
x % 3
:-
10 % 3
的结果是1
,因为 10 除以 3 的余数是 1。
-
-
计算
3 + x % 3
:-
3 + 1
的结果是4
。
-
-
计算
x += 3 + x % 3
:-
相当于
x = x + 4
。 -
当前的
x
是10
,所以x = 10 + 4
。
-
-
最后,
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)
解析:
-
int **pp, *p, a=10, b=20;
-
pp
是一个指向指针的指针(即二级指针)。 -
p
是一个指向整型的指针(即一级指针)。 -
a
和b
是整型变量,分别初始化为 10 和 20。
-
-
pp = &p;
-
这行代码将
p
的地址赋值给pp
。现在pp
指向p
。
-
-
p = &a;
-
这行代码将
a
的地址赋值给p
。现在p
指向a
,因此*p
的值是 10。
-
-
p = &b;
-
紧接着,这行代码将
b
的地址赋值给p
。现在p
指向b
,因此*p
的值变为 20。 -
注意,此时
pp
仍然指向p
,但p
的值已经改变,指向了b
而不是a
。
-
-
printf("%d,%d", *p, **pp);
-
*p
:由于p
指向b
,所以*p
的值是b
的值,即 20。 -
**pp
:pp
指向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
,该函数接收一个二维数组作为参数。
-
二维数组
a
被初始化为:1 2 3 4 5 6 7 8 9制代码
-
在
main
函数中,数组a
被传递给函数foo
。在C语言中,当二维数组作为参数传递给函数时,它实际上是通过指向其第一个元素(即第一个子数组)的指针来传递的。因此,foo
函数中的参数b
是一个指向包含3个整数的数组的指针。 -
在
foo
函数中,执行了++b;
操作。这个操作使b
指针指向了a
的第二个子数组(即{4, 5, 6}
)。此时,b[0]
指向{4, 5, 6}
,b[1]
指向{7, 8, 9}
。 -
接下来,执行
b[1][1] = 9;
。由于b
现在指向a
的第二个子数组,所以b[1][1]
实际上是指a[2][1]
(即原数组中的8所在的位置)。这行代码将a[2][1]
的值更改为9。 -
回到
main
函数,执行printf("%d", a[2][1]);
。由于a[2][1]
的值在foo
函数中被更改为9,所以输出将是9。
因此,程序的输出是9
。
未完待续,持续更新!
以防后边找不到可以点赞收藏下!
欢迎找我进行职业规划,超值的自我投资 -> 嵌入式软件工程师一对一指导
相关文章:
嵌入式C语言面试题 - 2024/11/18
欢迎找我进行职业规划,超值的自我投资 -> 嵌入式软件工程师一对一指导 转载请注明来源: 下边代码,x值是? int x10;x 3x%(3); 解析: 初始值:x 10 计算 x % 3: 10 % 3 的结果是 1&#…...

理解原子变量之四:可见性、memory_order_acquire与 memory_order_release
在理解原子变量之二:从volatile到内存序-进一步的认识-CSDN博客里的实例3里面,我们看到,如果在一个线程里修改原子变量done,另一个线程读取done时,就会看到这个变化。这就是原子变量的可见性。其实这个认识是不全面的。…...
requests的session
如果有cookie,能够自动关联,可以使用如下: session对象能够帮我们自动管理和传递cookie,但是后续的请求,必须使用session对象发起 session requests.session() re session.get() re session.post()或 session reque…...

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

Windows系统编程 - 进程遍历
文章目录 前言进程的遍历CreateToolhelp32SnapshotProcess32FirstProcess32Next进程遍历 总结 前言 各位师傅好,我是qmx_07,今天给大家讲解进程遍历的相关知识点 进程的遍历 快照:使用vmware虚拟机的时候,经常需要配置环境服务…...
从零开始创建一个 Vue3+Vite+TS+Eslint项目
一、创建一个最简单的 Vue3 项目 pnpm create vuelatest只设置项目名,其它任何功能都不加。 二、引入 Typescript 详见 Vue3 Vite 项目引入 Typescript 三、引入 Eslint Pritter 详见 Vue3 Vite TS 项目引入 Eslint Pritter 四、配置自动导入插件引入 El…...
Python操作neo4j库py2neo使用(一)
Python操作neo4j库py2neo使用(一) 安装(只用于测试) docker-compose .yml 文件 version: 3.8 services:neo4j:image: neo4j:5.6.0-enterprise #商业版镜像hostname: neo4jcontainer_name: neo4jports:- "7474:7474"-…...

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

leetcode刷题记录(四十二)——101. 对称二叉树
(一)问题描述 . - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/symmetric-tree/description/给你…...

AutoDL安装docker问题
在AutoDL上租了卡,安装docker遇到一些问题: 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有没有启动,…...
C++头文件大全(要是还有请帮忙)
以下是 C 中常见的各类头文件分类列举(但实际远不止这些,随着标准库扩充及第三方库使用会有更多): 输入 / 输出流相关头文件 <iostream>:用于标准输入输出,定义了 cin、cout 等对象。<fstream>…...

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

oracle排查长时间没提交的事务造成的阻塞案例
一 问题描述 开发同事反馈生产环境某个接口慢,一个普通的按主键更新的update竟然需要5分钟,而我手动执行秒返回,猜测是发生了阻塞,需要排查出阻塞源。 有时,一个事务里会包含多个sql,有的还包含上传附件等…...
React第七节 组件三大属性之 refs 的用法注意事项
1、定义 React 中refs 是允许我们操作DOM 访问组件实例的一种方案。开发人员可以直接使用 refs 访问操作DOM,而不用自身的数据状态,这种方案在实际开发过程中是有必要的,但是不建议通篇使用refs操作DOM,如果是这样,那…...
工程企业需要什么样的物资管理系统?为什么需要物资管理系统?
一、背景与意义 在工程项目的建设中,无论是高楼大厦的拔地而起,还是高速公路的绵延铺展,物资都是最基础的要素之一。从钢筋水泥到施工机械,任何一种物资的管理不善都可能导致项目延误、成本超支,甚至质量问题。然而&a…...

基于网页的大语言模型聊天机器人
代码功能 用户交互界面: 包括聊天历史显示区域和输入框,用户可以输入消息并发送。 消息发送和显示: 用户输入消息后点击“Send”按钮或按下回车键即可发送。 消息发送后显示在聊天记录中,并通过异步请求与后端 AI 模型通信&am…...
深入理解索引(一)
1.引言 在数据库和数据结构中,索引(Index)是一种用于提高数据检索速度的重要机制。本文将详细深入介绍索引。 2. 索引的分类 2.1 B - 树索引(B - Tree Index) 2.1.1 结构细节 树状结构:B - 树索引是一…...

动态规划子数组系列一>最长湍流子数组
1.题目: 解析: 代码: 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,如果 m m m或 n n n超出原来的行或列,则会自动补充行或列,目标元素改为要求的,其余为 0 0 0 A ( m ) c A(m)c A(m)c将索引…...
对 TypeScript 中函数如何更好的理解及使用?与 JavaScript 函数有哪些区别?
TypeScript 中函数的理解 在 TypeScript 中,函数本质上与 JavaScript 中的函数类似,但是它增强了类型系统的支持,使得我们可以对函数的参数和返回值进行更严格的类型检查。这样可以有效减少类型错误,提高代码的可维护性和可读性。…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...

通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...