学习C语言(19)

news2024/11/16 19:42:07

整理今天的学习内容

1.memmove使用和模拟实现

void* memmove (void* destination,const void* source,size_t num);

和momcpy的差别是memmove函数处理的源内存块和目标内存块是可以重叠的

memmove的模拟实现:

 2.memset函数的使用

void* memset (void* ptr, int value, size_t num);

memset是用来设置内存的,将内存中的值以字节为单位设置成想要的内容

3.memcmp函数的使用

int memcmp(const void* ptr1, const void* ptr2, size_t num);

分别从ptr1和ptr2指向的位置开始向后比较num个字节

        

数据在内存中的储存

1.大小端字节序和字节序判断

超过⼀个字节的数据在内存中存储的时候,会遇到存储顺序的问题

储存顺序有两种:

大端(存储)模式:
数据的低位字节内容保存在内存的高地址处,而数据的高位字节内容保存在内存的低地址处
小端(存储)模式:
数据的低位字节内容保存在内存的低地址处,而数据的高位字节内容保存在内存的高地址处

2.练习题

(1)设计一个小程序来判断当前机器的字节序

 (2)解释程序运行的结果

128:原码:00000000 00000000 00000000 10000000

          反码:01111111 11111111 11111111 01111111

          补码:01111111 11111111 11111111 10000000

a:10000000

整型提升:11111111 11111111 11111111 10000000

打印的是无符号整数11111111 11111111 11111111 1000000+0

(3)解释程序运行的结果

将-1~-1000赋给char类型的变量

          a

00000000     0

00000001     1

00000010     2

00000011     3

......

01111111    127     

10000000 -->11111111 11111111 11111111 10000000-->10000000 00000000 00000000 01111111-->10000000 00000000 00000000 10000000    -128

10000001  -127

......

11111111   -1

所以从-1一直赋下去直到a中存的是0,最终结果是255

(4)

解释程序运行的结果

 当-1存入i时,补码为11111111 11111111 11111111 11111111,因为i是无符号整型,所以i被打印出来是一个很大的数,继续减1一直循环

(5)该代码运行环境是x86,小端字节序

解释程序运行的结果

ptr1略,a是数组首元素地址,这个数组在内存中的存放为:01 00 00 00 02 00 00 00 03 00 00 00   04 00 00 00  被强制转换为int类型,地址数值+1,再强转为int*类型,此时ptr2是00 00 00 02 的地址,用十六进制打印出来就是2000000

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

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

相关文章

程序批量卸载工具 | BCUninstaller v5.8.1 绿色版

大家好,今天电脑天空给大家推荐一款强大的Windows软件卸载工具——Bulk Crap Uninstaller(BCUninstaller)。如果你经常需要安装和卸载软件,那么这款工具绝对值得你一试。以下是我在使用BCUninstaller的一些心得分享,希…

具备自动灵敏度校准、支持单键和多点触控的触摸芯片-GTX315L

电容式触摸芯片 - GTX315L是具有多通道触发传感器的15位触摸传感器系列,它是通过持续模式提供中断功能和唤醒功能,具备自动灵敏度校准、超强抗干扰能力,可抗特斯拉(小黑盒)线圈干扰,支持单键/多点触控&…

CN05.1,NDVI,CMIP6及TIFF图像数据处理方法合集

笔记链接: 数据处理数据集:https://www.wolai.com/aKjMiRrEk6C3WG4Yg8rYiz需要登录wolai才能查看,用于个人学习记录。

五,Spring Boot中的 Spring initializr 的使用

五,Spring Boot中的 Spring initializr 的使用 文章目录 五,Spring Boot中的 Spring initializr 的使用1. 方式1:IDEA创建2. 方式2:start.spring.io 创建3. 注意事项和细节4. 最后: 需要:使用 Spring initi…

我的私有云-IOT定位/追踪系统

目录 1. 说明 2 完成后的效果 2.1 实时定位 2.2 轨迹重现 2.3 设备美照 3. 项目设计 3.1 系统拓扑图​编辑 3.2 技术选型 3.3 消息订阅处理架构图 3.4 frp服务在线监控​编辑 4. 实施 4.1 数据模型 - DeviceLocation 4.2 数据报规格定义 订阅主题 数据报格式 …

ARM32开发——(二十三)存储器介绍

1. 存储器分类 存储器按其存储介质特性主要分为“易失性存储器”和“非易失性存储器”两大类。 “易失/非易失”是指存储器断电后, 它存储的数据内容是否会丢失的特性。 在计算机中易失性存储器最典型的代表是内存,非易失性存储器的代表则是硬盘。 2.…

互联网全景消息(2)之RabbitMq高阶使用

一、RabbitMQ消息可靠性保障 消息的可靠性投递是使用消息中间件不可避免的问题,不管是Kafka、rocketMQ或者是rabbitMQ,那么在RabbitMQ中如何保障消息的可靠性呢? 首先来看一下rabbitMQ的 架构图: 首先从图里我们可以看到&#xff…

python发现是anaconda的,而不是原来的编译环境

发现有三个python编译器。 可以检查一下环境变量,把原来的python编译器版本上移到anaconda的python编译器之前。这样每次在终端使用python命令就是原来的python编译器版本了

基于Docker搭建Graylog分布式日志采集系统

文章目录 一、简介二、Graylog1、主要特点2、组件3、工作流程介绍4、使用场景 三、Graylog 安装部署1、 安装 docker2、安装docker compose3、 安装graylog4、Graylog控制台 四、springboot集成Graylog 一、简介 Graylog是一个开源的日志管理工具,主要功能包括日志…

c++中的匿名对象及内存管理及模版初阶

c中的匿名对象 A a;//a的生命周期在整个main函数中 a.Sum(1); //匿名对象生命周期只有一行,只有这一行会创建对象,出了这一行就会调析构 A().Sum(1);//只有这一行需要这个对象,其他地方不需要。 return 0; 日期到天数的转换 计算日期到天数转换_牛客…

解读GaussianTalker:利用音频驱动的基于3D高斯点染技术的实时高保真讲话头像合成

单位:首尔大学 项目地址:https://ku-cvlab.github.io/GaussianTalker/ github:https://github.com/KU-CVLAB/gaussiantalker 本文是对GaussianTalker的解读,欢迎大家阅读指正! 目录 前言摘要一、背景介绍二 相关工作三…

拼多多Temu半托管和全托管对比

根据东吴证券报告显示,与全托管相比,半托管给予商家更灵活的物流选择,允许商家自行负责仓配物流;与传统3P模式相比,半托管仍保留平台核价、平台负责营销售后客服等特点。 Temu 最开始采用全托管模式,但随着…

【C++ Primer Plus习题】7.6

问题: 解答: #include <iostream> using namespace std;#define SIZE 20int Fill_array(double* arr, int len) {int i 0;for (i 0; i < len; i){cout << "请输入值:";cin >> arr[i];if (cin.fail()){cout << "输入非法数字,结束…

.NET中分布式服务

单体架构 特点&#xff1a; 所有的功能集成在一个项目工程中。所有的功能打在一个安装包。 优点&#xff1a; 项目架构简单。开发效率高。容易打包。 缺点&#xff1a; 全部功能集成在一个工程中&#xff0c;如果要更新&#xff0c; 所有的都要重新发布版本迭代速度逐渐变…

C#笔记4 详细解释事件及其原型、匿名方法和委托的关系

匿名方法 定义 匿名方法允许一个与委托关联的代码被内联的写入使用委托的位置。 语法形式 delegate(参数列表) {代码块 } 前文说过&#xff0c;委托是定义了一个公司&#xff0c;公司专门承接某一类型的任务。 委托的实例化就是公司把任务交给了具体的职员&#xff08;方…

【React】从零开始搭建 react 项目(初始化+路由)

创建 React 项目 创建项目的方式&#xff1a;create-react-app 项目名称 如果没有安装 react 脚手架&#xff0c;请先安装 npm isntall create-react-app -g安装成功后&#xff0c;开始配置项目 配置项目的 icon 和标题 配置 jsconfig.json 目的&#xff1a;用于配置 Java…

Google Earth Engine(GEE)——在 CloudCompare软件 中处理地面激光扫描 (TLS) 数据

背景和目的 本实验的目标是熟悉 3D 点云数据。我们将使用上周在 Boab 法院校园收集的数据。我们使用 Leica BLK360 激光扫描仪收集了多次扫描,今天我们将处理其中的一些扫描。 可以在此处以 .las 格式下载扫描数据(请注意,每个文件约为 1GB):这个是链接 https://www.dro…

批量进行Mysql数据处理的一项工作记录以及保存一个nginx变量大全

一、批量进行Mysql数据处理的一项工作记录 在使用SQL执行一起数据批量处理的时候遇到执行数速度非常慢。表temp_users是一个包含百万级的用户ID表&#xff0c;表user_list是一个亿级的表&#xff0c;因为跨库&#xff0c;这里使用的是federated引擎创建的结构表。根据要实现的目…

FPGA实现SDI视频H265压缩网络推流输出,基于VCU架构,支持12G-SDI 4K60帧,提供工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我这里已有的视频图像编解码方案本博已有的 SDI 编解码方案 3、详细设计方案设计框图FPGA开发板视频输入SDI硬件均衡器LMH1219UHD-SDI GT SDI视频解串SMPTE UHD-SDI RX SUBSYSTEM SDI视频解码Video Frame Buffer WriteZynq UltraS…

大模型时代下,软件检测行业将如何发展?

大模型时代&#xff0c;软件测试面临着前所未有的机遇和挑战&#xff0c;各类产品测试领域将如何应对技术发展和时代变化&#xff1f; 2024年8月28日晚八点&#xff0c;安畅检测首席专家李龙与腾讯Tech Lead茹炳晟、中电金信质量团队负责人王壮做客人民邮电出版社创办的IT专业…