C/C++几个关键知识点记录

news2024/9/24 13:13:58

1.将一个数值作为函数执行

(*(void(*)())0x13)();

同理也可以将数值换成一个变量:

int var=0x13;
(*(void(*)())var)();

2.断言assert

用于判断输入的参数是否正确,实际就是判断输入的参数是否为0,如STM32的固件库中常用的assert_param(),当输入参数不为0(或NULL)的时候就是“(void)0",当输入参数为0的时候就会调用assert_failed(),assert_failed()函数可以自己定义,一般就是打印错误信息然后死循环卡死。

结构体位域

1.先说下结构体的定义:
结构体的定义只有一种形式,即:
在这里插入图片描述
如:
在这里插入图片描述
但是结构体变量的定义有4种形式,分别为:用结构体名定义结构体变量:
在这里插入图片描述
定义结构体的时候定义结构体变量:
在这里插入图片描述
省略结构体名直接定义结构体变量:
在这里插入图片描述
用某一结构体类型,定义结构体变量:

typedef struct
{
char *name;
int age;
int height;
}student_type;
student_type stu;

OK,言归正传,说说结构体位域:
位域的基本形式就是:

struct test_st
{
	char a:5;
	char b:2;
	char c:2;
	char d:4;
}tc;

冒号后面的数字就是表示其占了该字节的几个位,如a占了5个位,其取值范围就是2^5次方,b就是2的2次方;
需要注意的是:
1.位域不能跨字节,如位域c并不是占了第一字节的最后一个位(最高位),然后占了第二字节的第一个位,而是直接从第二字节开始的;
2.由于上述特性,所以位域的长度(位数)不能大于8
3.位域可以无位域名,这种情况可以用来作填充或调整位置,如:

struct test_st
{
	char a:5;
	char b:2;
	char :1;
	char c:2;
	char d:4;
}tc;

4.如果位域的长度为0,表示是个空域,同时下一个位域会从下一个字节开始存放。
5.位域的一个作用是缩减程序大小,如上诉位域,5个char型变量实际只占用2个字节,但是要达到这种效果还有个必要条件就是:位域的类型必须为char型或unsigned char型,否则无效;如上述位域的类型如果都为int类型的话,那就会占用不止2字节。
6.位域是从一个字节的低位开始存储的,如a存储在第一个字节的0-4位上,b存在5-6位上。

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

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

相关文章

Ceph入门到精通- Linux 磁盘管理(block 与 inode)

1 硬盘 block 与 inode 详解 1.1 Sector(扇区)与 Block(块) 1) 硬盘的最小存储单位:sector(扇区),每个扇区储存 512 字节;操作系统会一次性连续读取多个…

抖音短视频seo矩阵系统源码开发部署技术分享

抖音短视频的SEO矩阵系统是一个非常重要的部分,它可以帮助视频更好地被搜索引擎识别和推荐。以下是一些关于开发和部署抖音短视频SEO矩阵系统的技术分享: 一、 抖音短视频SEO矩阵系统的技术分享: 关键词研究:在开发抖音短视频SEO矩…

cvc-complex-type.2.4.a: 发现了以元素 ‘base-extension‘ 开头的无效内容。应以 ‘{layoutlib}‘ 之一开头。

✍️作者简介:沫小北(专注于Android、Web、TCP/IP等技术方向) 🐳博客主页:沫小北 CSDN、51cto博客、稀土掘金、简书、知乎、开源中国、博客园、慕课网 🌐系列专栏:码农小北 🔔如果文…

防止连点..

1.连点js文件 let timer; letflag /*** 节流原理:在一定时间内,只能触发一次** param {Function} func 要执行的回调函数* param {Number} wait 延时的时间* param {Boolean} immediate 是否立即执行* return null*/ function throttle(func, wait 500…

[Java] 单例设计模式详解

模式定义:保证一个类只有一个实例,并且提供一个全局访问点,时一种创建型模式 使用场景:重量级的对象,不需要多个实例,如线程池,数据库连接池 单例设计模式的实现 1.懒汉模式:延迟…

牛客上面的约瑟夫环问题

对于本题 我感觉还是链表做起来舒服 数组也可以做 但是数组需要去控制循环 不太好控制 我之前搞了 最后看别人的实现 但是链表搞了一次就搞好了 香的嘞~ 下面是代码 用单链表实现循环 再去删除要删除的人 5个人 数到2 你们在纸上画图 我就不画了 对于数组实现你们可以去…

python读取json文件

import json# 文件路径(同目录文件名即可,不同目录需要绝对路径) path 1.json# 读取JSON文件 with open(path, r, encodingutf-8) as file:data json.load(file)#data为字典 print(data) print(type(data))

前端Vue入门-day03-用Vue实现工程化、组件化开发

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 生命周期 Vue 生命周期 和 生命周期的四个阶段 Vue 生命周期函数(钩子函数) 案例…

为公网远程访问树莓派配置一个固定TCP地址

今天我们就为大家介绍,如何设置cpolar,为树莓派的SSH构建一个永久固定TCP地址。 如果看过我们之前的文章介绍,就会很轻易的发现,能够让公共互联网通过SSH访问树莓派的关键,是cpolar打通的数据隧道,因此想要…

【双指针优化DP】The 2022 Hangzhou Normal U Summer Trials H

Problem - H - Codeforces 题意: 思路: 首先很明显是DP 因为只有1e6个站点,因此可以以站点作为阶段 注意到K很小,因此可以尝试把这个当作第二维 设dp[i][j]为到达第i个站点,已经花了j元钱的最小步数 然后就想了一…

Redis持久化机制 RDB、AOF、混合持久化详解!如何选择?| JavaGuide

本文已经收录进 JavaGuide(「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。) Redis 持久化机制属于后端面试超高频的面试知识点,老生常谈了,需要重点花时间掌握。即使不是准备面试,日常开发也是需要经常用到的。 最近抽空对之前写的 Redis 持久化…

18 张图,总结 Java 容器化的最佳实践~

一、系统选择 关于最基础的底层镜像, 通常大多数我们只有三种选择: Alpine、Debian、CentOS; 这三者中对于运维最熟悉的一般为 CentOS, 但是很不幸的是 CentOS 后续已经不存在稳定版, 关于它的稳定性问题一直是个谜一样的问题; 这是一个仁者见仁智者见智的问题, 我个人习惯是能…

RunnerGo:详细使用教程,带你轻松拿捏性能测试

RunnerGo简介: RunnerGo是基于go语言开发的轻量级性能测试平台,支持接口测试、自动化测试、性能测试等3大测试模块,相对于传统的性能测试工具,它具有运行速度快、资源占用少等特点。并且还支持可实时查看性能测试报告的平台 Run…

mybatisplus入门教程

mybatisplus入门教程 文章目录 mybatisplus入门教程什么是Mybatis Plus快速入门创建数据库 gk_mybatis_plus创建数据库表添加数据创建空的Spring Boot项目添加依赖配置数据库连接MySQL编写代码实体类 GkUserDomainmapperxml映射文件业务层,实现类控制层创建请求配置…

Vue2基础八、插槽

零、文章目录 Vue2基础八、插槽 1、插槽 (1)默认插槽 作用:让组件内部的一些 结构 支持 自定义需求: 将需要多次显示的对话框, 封装成一个组件问题:组件的内容部分,不希望写死,希望能使用的时候自定义。…

Redission分布式锁详解

前言 ​ 在分布式系统中,当不同进程或线程一起访问共享资源时,会造成资源争抢,如果不加以控制的话,就会引发程序错乱。而分布式锁它采用了一种互斥机制来防止线程或进程间相互干扰,从而保证了数据的一致性。 常见的分…

【低代码】对低代码未来发展方向的思考

写在前面 看似不起波澜,日复一日的努力,会突然在某一天,让你看到坚持的意义。 1 基础介绍 1.1 什么是低代码 低代码开发是一种软件开发方法,它允许开发人员使用图形界面和少量代码来快速构建应用程序。开发人员可以使用预定义的…

Docker 之 Consul容器服务更新与发现

一、Consul介绍 1、什么是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构&#xff…

你们公司的【前端项目】是如何做测试的?字节10年测试经验的我这样做的...

前端项目也叫web端项目(通俗讲就是网页上的功能)是我们能够在屏幕上看到并产生交互的体验。 前端项目如何做测试? 要讲清楚这个问题,先需要你对测试流程现有一个全局的了解,先上一张测试流程图: 测试流程…

QT--day3(定时器事件、对话框)

头文件代码&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> //定时器事件处理时间头文件 #include <QTime> //时间类 #include <QtTextToSpeech> #include <QPushButton> #include <QLabel&g…