c/c++面试100道

news2024/11/15 13:51:55

1.一道笔试题解析_哔哩哔哩_bilibili

P20:#define offsetof(TYPE, MEMBER) ((size_t)&((TYPE*)0)->MEMBER)

1、

offsetof 宏是 C 语言中用于计算结构体成员相对于结构体起始地址的偏移量的宏定义。这个宏的定义如下:

#define offsetof(TYPE, MEMBER) ((size_t)&((TYPE*)0)->MEMBER)

这个宏定义的工作原理如下:

  1. TYPE* 是一个指向 TYPE 结构体的指针。
  2. (TYPE*)0 将整数 0 转换为 TYPE 类型的指针。这里 0 是一个空指针常量,转换成 TYPE 类型的指针后,它指向的是结构体的起始地址。
  3. ((TYPE*)0)->MEMBER 使用箭头操作符 -> 访问结构体的成员 MEMBER。由于 TYPE* 指针指向地址 0,这实际上是在计算 MEMBER 在 TYPE 结构体中的偏移量。
  4. (size_t)&((TYPE*)0)->MEMBER 取 MEMBER 成员的地址并强制转换为 size_t 类型,这样得出的就是 MEMBER 相对于结构体起始地址的偏移量。

通过这个宏,你可以在运行时获取结构体成员的偏移量,这对于编写低级代码或者处理结构体布局非常有用。

size_t:

size_t 是一种无符号整数类型,用于表示对象的大小和内存地址。它是标准 C 库中的一种类型,size_t 的大小取决于平台的架构(32 位或 64 位),并且它能存储最大的内存地址值,因此它通常与平台的指针大小匹配。在 32 位系统中,size_t 通常是 4 字节(32 位),在 64 位系统中,通常是 8 字节(64 位)。

X86和X64的区别:

X86指的是支持32位的指令集架构处理器,最初由英特尔在1978年发布的 intel 8086,这个系统主要为X86结尾所以简称X86,而X86有16位和32位,现今大多数用的是32位处理器。

X64指的是支持64位的指令集架构处理器,最初由AMD在2003年发布的AMD 64 支持64位的处理器由来,后续英特尔为了支持X64所以也推出 intel X64。

联合体和结构都要做数据对齐,对齐的位数取决于系统是32位还是64位

32位默认操作的最小单元是4个字节,64位默认操作的最小单元是8个字节

这里在代码前加上#pragma pack(4)  

可以实现强制4字节对齐

P21:const

在c中也可以这样间接的修改const变量的值

用const修饰形参的时候,不能更改它修饰的值:

以下函数定义是会报错的

P22:fork()

#include <stdio.h>
#include <unistd.h>

int main() {
    fork() || fork();
    printf("Hello ");
    return 0;
}

分析:
最初的进程(P0)调用第一个fork()。这会创建一个子进程(P1)。

P0: 第一个fork()返回非0(父进程的返回值),所以fork()的结果为真,fork()后的第二个fork()不会执行。
P1: 第一个fork()返回0(子进程的返回值),所以fork()后的第二个fork()会执行。
P1调用第二个fork(),创建另一个子进程(P2)。

P1: 第二个fork()的结果返回非0,执行printf("Hello ")。
P2: 第二个fork()返回0,执行printf("Hello ")。
总结
P0: 执行printf("Hello ")。
P1: 执行printf("Hello ")。
P2: 执行printf("Hello ")。
总共有3个进程执行printf("Hello "),所以最终输出"Hello "三次。

P23:指针引用

P24:调用几次构造函数

C++中的class的应用_c++ class用法-CSDN博客

疑问:C++的string类 和 class的关系是什么?

答疑:C++的string类和class的关系在于string是一个具体的类,而class是定义类的关键字。string类是C++标准库中的一部分,它是一个封装了字符串操作的类,提供了许多功能,比如动态管理字符串内存、字符串拼接、查找等。而class是用来定义自定义类型的工具,可以用来创建自己的类,包括string这样已有的类。简单来说,string是通过class定义的。

疑问:C++中struct和class的区别

有一点特殊的是,当class定义时,如果没有string name这种复杂的定义则其他简单定义就不会初始化

题目:

这里MyClass a[4] 创建了4个类的对象,所以执行了四次构造函数

这里MyClass *p[5] 创建了5个指向类的对象的指针,因为只是指向类对象的指针所以并没有创建对象,所以不会执行构造函数

dede

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

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

相关文章

可测试,可维护,可移植:上位机软件分层设计的重要性

互联网中&#xff0c;软件工程师岗位会分前端工程师&#xff0c;后端工程师。这是由于互联网软件规模庞大&#xff0c;从业人员众多。前后端分别根据各自需求发展不一样的技术栈。那么上位机软件呢&#xff1f;它规模小&#xff0c;通常一个人就能开发一个项目。它还有必要分前…

【微处理器系统原理与应用设计第九讲】GPIO之按键控灯功能——按键控制灯进行亮灭转换的应用设计与程序分析

一、基础知识与明确 1、GPIO的有效电平 由按键结构决定&#xff0c;按键按下时输入为低电平&#xff0c;按键悬空时为输入为高电平&#xff0c;按键的输入给到GPIO的引脚&#xff08;例如PC13&#xff09; 2、条件控制语句 if(a)&#xff1a;如果a为非0数字或字符那么就为真…

java使用jfreechart生成图表

java使用jfreechart生成图表 java使用jfreechart生成图表创建java项目创建图表类SerieCharts 测试效果柱状图折线图 java使用jfreechart生成图表 需求背景&#xff0c;公司有一个产品的外网体验地址&#xff0c;需要做一些数据监控&#xff0c;比如日活量、访问量等。因此需要生…

爆改YOLOv8|利用特征融合网络FFA-Net改进YOLOv8-模糊图片检测

1&#xff0c;本文介绍 FFA-Net&#xff08;Feature Fusion Attention Network&#xff09;主要用于图像去雾任务&#xff0c;其核心思想是通过特征融合注意力网络直接恢复无雾图像。它的架构包括以下三个关键组件&#xff1a; 特征注意力&#xff08;Feature Attention, FA&a…

3280. 将日期转换为二进制表示

目录 一&#xff1a;题目&#xff1a; 二&#xff1a;代码&#xff1a; 三&#xff1a;结果 一&#xff1a;题目&#xff1a; 给你一个字符串 date&#xff0c;它的格式为 yyyy-mm-dd&#xff0c;表示一个公历日期。 date 可以重写为二进制表示&#xff0c;只需要将年、月…

android系统源码12 修改默认桌面壁纸--SRO方式

1、aosp12修改默认桌面壁纸 代码路径 &#xff1a;frameworks\base\core\res\res\drawable-nodpi 替换成自己的图片即可&#xff0c;不过需要覆盖所有目录下的图片。 由于是静态修改&#xff0c;则需要make一下&#xff0c;重新编译。 2、方法二Overlay方式 由于上述方法有…

浅谈架构实战

目录 背景 1 架构演变 2 如何实现高层的复用 2 中台产生案例 3 技术架构的核心要点 4 技术架构的高可用案例 背景 业务架构、数据架构、应用架构和技术架构它们是相互关联和相互支持的&#xff0c;共同构成了企业的总体架构&#xff0c;业务架构是源头&#xff0c;然后才…

Java 中常用内置接口函数

在 Java 8 及以后的版本中&#xff0c;引入了许多函数式编程的特性&#xff0c;其中最重要的就是内置的函数式接口。这些接口使得编写更简洁、可读性更强的代码成为可能。今天我将介绍四个常用的内置接口&#xff1a;Predicate、Function、Consumer 和 Supplier&#xff0c;并提…

Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(4)

本文仅作笔记学习和分享&#xff0c;不用做任何商业用途 本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正​​ Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(3)-CSDN博客 这节就是真正的存储数据了 理清一下思路&am…

SprinBoot+Vue漫画天堂网的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…

0x06 记录一次挖src的经历(xss漏洞)

漏洞平台&#xff1a;补天 - 企业和白帽子共赢的漏洞响应平台&#xff0c;帮助企业建立SRC 个人总结的挖洞流程&#xff1a; 1&#xff09;先用工具信息收集一波 我这里先用灯塔收集一下目标资产 2&#xff09;然后用漏洞扫描工具扫描一波 我这里用Acunetix进行扫描 因为工具…

驱动(RK3588S)第九课时:多节点驱动与函数接口

目录 一、多节点概念1、所用到的结构体说明2、函数接口主要是read和write函数2.1、把应用层的数据拷贝给底层2.2、把应用层的数据拷贝给底层 3、应用层的read和write函数4、底层的read和write函数二、ioctl控制命令接口1、概念2、函数介绍应用层和驱动层 三、代码与现象1.编写L…

三相直流无刷电机(BLDC)控制算法实现:BLDC有感启动算法思路分析

一枚从事路径规划算法、运动控制算法、BLDC/FOC电机控制算法、工控、物联网工程师&#xff0c;爱吃土豆。如有需要技术交流或者需要方案帮助、需求&#xff1a;以下为联系方式—V 方案1&#xff1a;通过霍尔传感器IO中断触发换相 1.1 整体执行思路 霍尔传感器U、V、W三相通…

使用 nuxi preview 命令预览 Nuxt 应用

title: 使用 nuxi preview 命令预览 Nuxt 应用 date: 2024/9/8 updated: 2024/9/8 author: cmdragon excerpt: 摘要:本文介绍了如何使用nuxi preview命令预览Nuxt.js应用,包括安装和准备环境、启动预览服务器的步骤,以及如何指定根目录和使用自定义.env文件等高级用法。通…

【H2O2|全栈】关于HTML(5)HTML基础(四)

HTML基础知识 目录 HTML基础知识 前言 准备工作 标签的具体分类&#xff08;四&#xff09; 本文中的标签在什么位置中使用&#xff1f; 表单&#xff08;一&#xff09; 表单标签 输入域标签 预告和回顾 后话 前言 本系列博客将分享HTML相关知识点。 这一期博客&…

使用 DBeaver 创建 MySQL 数据库

文章目录 创建数据库创建用户 创建数据库 1.在【数据库】上点右键&#xff0c;然后选择【新建 数据库】 2.输入 数据库名&#xff0c;点击确定 这样&#xff0c;数据库就创建好了 创建用户 1.在【用户】上点右键&#xff0c;然后选择【新建 用户】 在属性这里&#xff0c;输入…

基于yolov8的血细胞检测计数系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的血细胞检测与计数系统是一种利用深度学习技术&#xff0c;特别是YOLOv8目标检测算法&#xff0c;实现高效、准确血细胞识别的系统。该系统能够自动识别并计数图像或视频中的血细胞&#xff0c;包括红细胞、白细胞和血小板等&#xff0c;为医疗诊断提…

揭开面纱--机器学习

一、人工智能三大概念 1.1 AI、ML、DL 1.1.1 什么是人工智能? AI&#xff1a;Artificial Intelligence 人工智能 AI is the field that studies the synthesis and analysis of computational agents that act intelligently AI is to use computers to analog and instead…

v0.dev快速开发

探索v0.dev&#xff1a;次世代开发者之利器 今之技艺日新月异&#xff0c;开发者之工具亦随之进步不辍。v0.dev者&#xff0c;新兴之开发者利器也&#xff0c;迅速引起众多开发者之瞩目。本文将引汝探究v0.dev之基本功能与优势&#xff0c;助汝速速上手&#xff0c;提升开发之…

WSL 下的 CentOS 装 Docker

WSL 下的 CentOS 装 Docker 卸载旧版本安装前的准备工作1. 安装 yum-utils2. 添加阿里云的 yum 镜像仓库3. 快速生成 Yum 缓存 安装Docker启动docker运行 hello-world卸载 Docker 引擎参考资料 卸载旧版本 sudo yum remove docker \ docker-client \ docker-client-latest \ d…