【C语言敲重点(五)】嵌入式“八股文“(2)

1. struct和union的区别?

答:①联合体所有的成员都共享一块内存,修改联合体的任一成员的数据就会覆盖到其他成员的数据;
②结构体的成员变量都有独立的内存空间,且结构体的成员数据之间是不影响的

2. struct和class的区别?

答:①访问权限不同:class默认是私有的private,struct默认是公共的public
②继承权限不同:class默认是私有的private,struct默认是公共的public
③class可以用于定义模板,而struct不能

3. 指针和地址偏移问题

int main(){
    unsigned char *p1;
    unsigned long *p2;
    p1 = (unsigned char *)0x801000;
    p2 = (unsigned long *)0x810000;
    //p1+5偏移sizeof(unsigned char)*5 = 1*5
    printf("p1+5 = %p\n",p1+5); //答案:0x801005
    //p1+5偏移sizeof(unsigned long)*5=8*5=40(十进制)= 28(十六进制)
    printf("p2+5 = %p\n",p2+5); //答案:0x810028
    return 0;
}

4. 宏定义的陷阱 – “无脑替换”

#define CUBE(x)     x*x*x
int main(){
    int a = 3;
    printf("%d\n", CUBE(a)); //CUBE(a) = a*a*a = 27
    //CUBE(a+1) = a+1*a+1*a+1 = a+a+a+1 = 10
    printf("%d\n", CUBE(a+1));
    return 0;
}

5. 大小端字节序判断

  • 大端字节序:高地址存放数据的低位(网络字节序)
  • 小端字节序:高地址存放数据的高位(X86 PC)
union Test{
    short a;
    char b[2];
};

int main(){

    union Test test;
    test.a = 0x1234;
    if(test.b[0] == 0x12){  //低地址放高位
        printf("Big Endian\n");
    }
    if(test.b[0] == 0x34){  //低地址放低位
        printf("Small Endian\n");
    }

    return 0;
}

6.【面试真题】

  • 在X86架构的PC机上,下列程序输出结果是( A )

在这里插入图片描述

7. 枚举enum的赋值规则

在这里插入图片描述
在这里插入图片描述

8. 左值(lvalue)和右值(rvalue)的区别?

答:①左值:表示一个可被标识和修改的内存位置,可以出现在=左边的变量,其值可以改变,存储在内存中具有持久性。(典型的左值包括变量、数组元素和通过引用或指针访问的对象)
②右值:不能被赋值的常量、表达式,特点是可读。一般是临时的中间值或者常量。
③通常左值可以做右值,右值不能做左值(如:i++ = 5的写法是错误的)
注意:数组名是常量,不能被赋值,也就是数组名是右值。
(当定义char array[10] = “hello”时,array++和array=array+1都是错误的写法)
(区别定义char *array = “hello”时,array++和array=array+1的写法是允许的)

9. ++a和a++的区别?

  • 如果有表达式 a = i++ ;它等价于 a = i;i = i + 1(先赋值再自增,右值)
  • 如果有表达式 a = ++i;它等价于i = i + 1;a = i(先自增再赋值,左值)
    在这里插入图片描述

10. 在1G内存的PC中能否malloc(1.2G)?为什么?

答:可能可以。因为malloc是向进程申请虚拟内存,与物理地址空间没有直接关系。

11. 数组的负数下标

【面试真题】 写出下面程序的输出结果:0 1 2 3 4 5
在这里插入图片描述

12. 判断有符号、无符号整数

【面试真题】 写出判断一个整数是否是无符号整数的宏定义:
在这里插入图片描述

13. select、poll和epoll的区别?

答:①select相比于poll和epoll,支持跨平台可移植性好;但是select的实现是依赖轮询机制,且每次调用都需要在用户态和内核态之间复制拷贝所有文件描述符,因此效率比较差,并且监听的最大文件描述符数量也有限制,一般是1024个。
②poll在select的基础上,有了一定的改进和优化;但是底层实现机制和select一样,在效率上并没有大的提升。
③epoll相比于前面select和poll,可以说是最高效最常用的。它是基于内核事件驱动机制实现对事件的监听,底层通过红黑树和链表来存储监听的文件描述符和事件,当监听到事件发生,以消息通知的机制处理对应的文件描述符,避免了前面select和poll轮询机制的缺点,提高了效率,且没有文件描述符数量的限制。

14. 面向对象三大特征

继承、封装、多态

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode第 N 个泰波那契数 (认识动态规划)

认识动态规划 编写代码代码空间优化 链接: 第 N 个泰波那契数 编写代码 class Solution { public:int tribonacci(int n) {if(n 0){return 0;}else{if(n 1 || n 2)return 1;}vector<int> dp(n 1);dp[0] 0;dp[1] 1;dp[2] 1;for(int i 3;i < n;i){dp[i] dp[i-3]…

Upload文件导入多条数据到输入框

需求场景&#xff1a;文本框内容支持批量导入(文件类型包括’.txt, .xls, .xlsx’)。使用AntD的Upload组件处理。 下面是Upload的配置&#xff08;伪代码&#xff09;&#xff0c;重点为beforeUpload中的逻辑 // Antd 中用到的Upload组件 import { UploadOutlined } from ant…

汽车养护店服务难题,看帕凝怎样解决?

中国汽车市场庞大&#xff0c;入户已然成为标配&#xff0c;加之新能源汽车近些年高增量&#xff0c;更促进了行业增长。而汽车后市场也迎来了一系列变化&#xff0c;客户服务前后路径需完善&#xff0c;商家们应该如何数字化经营呢&#xff1f; 接下来让我们看看【帕凝汽车养…

NOI Linux 2.0 CSP奥赛复赛环境安装使用指南

新人旧人区别 以下是可能导致你在老版 NOI Linux 系统下形成的习惯在新版下翻车的改动。 移除了 GUIDE从 32bit 变为了 64bit 系统&#xff0c;需要注意指针现在占 8 字节而不是 4 字节更新了编译器版本默认情况下右键没了【新建文件】的选项桌面目录改为中文&#xff0c;可能…

7.Docker-compose

文章目录 Docker-compose概念Docker-compose部署YAML文件格式和编写注意事项注意数据结构对象映射序列属组布尔值序列的映射映射的映射JSON格式文本换行锚点和引用 Docker compose配置常用字段docker compose常用命令Docker Compose 文件结构docker compose部署apachedocker co…

【图像分割】基于蜣螂优化算法DBO的Otsu(大津法)多阈值电表数字图像分割 电表数字识别【Matlab代码#51】

文章目录 【可更换其他算法&#xff0c;获取资源请见文章第5节&#xff1a;资源获取】1. 原始蜣螂优化算法1.1 滚球行为1.2 跳舞行为1.3 繁殖行为1.4 偷窃行为 2. 多阈值Otsu原理3. 部分代码展示4. 仿真结果展示5. 资源获取说明 【可更换其他算法&#xff0c;获取资源请见文章第…

RTOS 低功耗设计原理及实现

RTOS 低功耗设计原理及实现 文章目录 RTOS 低功耗设计原理及实现&#x1f468;‍&#x1f3eb;前言&#x1f468;‍&#x1f52c;Tickless Idle Mode 的原理及实现&#x1f468;‍&#x1f680;Tickless Idle Mode 的软件设计原理&#x1f468;‍&#x1f4bb;Tickless Idle Mo…

Jmap-JVM(十六)

上篇文章说了ZGC是jdk11加入的&#xff0c;他是未来jvm垃圾收集器的奠定者&#xff0c;满足TB级别内存处理&#xff0c;STW时间保持在10ms以下。 Jmap 我们可以先通过jmap -histo 进程ip 来查看&#xff0c;但是这样看不太清晰&#xff0c;我们可以用这行命令生成一个文件&…

WebDAV之π-Disk派盘+ WinSCP

WinSCP是一个免费的开源文件传输应用程序&#xff0c;它使用文件传输协议&#xff0c;安全外壳文件传输协议和安全复制协议来进行纯文件或安全文件传输。该应用程序旨在与Windows一起使用&#xff0c;并支持常见的Windows桌面功能&#xff0c;例如拖放文件&#xff0c;跳转列表…

设计模式结构型——代理模式

目录 代理模式的用途 代理模式的实现 静态代理 JDK动态代理 CGLIB动态代理 代理模式的特点 与其他模式比较 代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许通过创建一个代理对象来间接访问原始对象。代理模式的核心思想是将对目…

预科C语言

1.day10 1、perror() 原型&#xff1a;void perror(const char *s); 根据errno呈现错误信息 perror("malloc error"); malloc error: Cannot allocate memory 2、多文件编译 .c ---预处理&#xff08;.i -E&#xff09;---汇编&#xff08;.s -S&#xf…

Visual Studio Code Python 扩展中的包管理

排版&#xff1a;Alan Wang Python 凭借其简单的语法和强大的库&#xff0c;目前已成为最流行的编程语言之一&#xff0c;也是最适合那些刚接触编程的人们的语言。但是&#xff0c;随着项目复杂性和规模的增长&#xff0c;管理依赖项的复杂性也会增加。当新用户不断承接更成熟的…

探秘MySQL底层架构:设计与实现流程

前言 Mysql&#xff0c;作为一款优秀而广泛使用的数据库管理系统&#xff0c;对于众多Java工程师来说&#xff0c;几乎是日常开发中必不可少的一环。无论是存储海量数据&#xff0c;还是高效地检索和管理数据&#xff0c;Mysql都扮演着重要的角色。然而&#xff0c;除了使用My…

《golang设计模式》第一部分·创建型模式-01-单例模式(Singleton)

文章目录 1. 概述1.1 目的1.2 实现方式 2. 代码示例2.1 设计2.2 代码 1. 概述 1.1 目的 保证类只有一个实例有方法能让外部访问到该实例 1.2 实现方式 懒汉式 在第一次调用单例对象时创建该对象&#xff0c;这样可以避免不必要的资源浪费 饿汉式 在程序启动时就创建单例对象…

Spring中事务失效的8中场景

1. 数据库引擎不支持事务 这里以 MySQL为例&#xff0c;MyISAM引擎是不支持事务操作的&#xff0c;一般要支持事务都会使用InnoDB引擎&#xff0c;根据MySQL 的官方文档说明&#xff0c;从MySQL 5.5.5 开始的默认存储引擎是 InnoDB&#xff0c;之前默认的都是 MyISAM&#xff…

数据结构--线性表2-1

目录 一、线性结构的定义 二、线性表的表示 三、顺序表的实现&#xff08;或操作&#xff09; 1、修改&#xff1a; 2、插入&#xff1a; 四、顺序表的运算效率分析&#xff1a;时间效率分析&#xff1a; 一、线性结构的定义 若结构时非空有限集&#xff0c;则有且仅有一个…

【MySQL】库和表的操作

目录 一、库的操作 1.1创建数据库 1.2创建数据库案例 1.3字符集和校验规则 &#xff08;1&#xff09;查看系统默认字符集以及校验规则 &#xff08;2&#xff09;查看数据库支持的字符集 &#xff08;3&#xff09;查看数据库支持的字符集校验规则 &#xff08;4&…

Layui下拉多选框

标题xmSelect插件&#xff1a; xmSelect文档 下载Layui第三方插件 下拉多选框效果&#xff1a; 实现方法(例子)&#xff1a; 将xmSelect插件的xm-select.js文件引入到layui中&#xff1a; <script src"public/js/xm-select/xm-select.js"></script> …

Ubuntu搭建Samba服务-学习记录

文章目录 Ubuntu安装Samba流程Samba配置文件Samba添加账户配置文件修改Samba服务控制设置开机自动启动通过systemctl 启动服务通过 rc.local 启动 Windows访问参考链接 当前文章仅用于记录&#xff0c;在 Ubuntu中安装使用Samba&#xff0c;在Windows访问 系统环境&#xff1a;…

数据库管理-第九十四期 19c OCM之路-第四堂(02)(20230725)

第九十四期 19c OCM之路-第四堂&#xff08;02&#xff09;&#xff08;20230725&#xff09; 第四堂继续&#xff01; 考点3&#xff1a;SQL statement tuning SQL语句调优 收集Schema统计信息 exec dbms_stats.gather_schems_stats(HR);开启制定表索引监控 create index…