当前位置: 首页 > news >正文

《C和指针》(6)指针

1、内存和地址

  • 计算机的内存是由数以亿万计的位(bit)组成,每一个位可以容纳值01值。由于一个位所能表示的值的范围太有限,所以单独的位用处不大。通常许多为合成一组作为一个单位,这样就可以存储范围较大的值。
  • 下图展示了现实机器中的一些内存位置,这些位置的每一个都被称为 字节(byte ,每个字节都包含了存储一个字符所需要的位数。在现在的许多机器上 每一个字节包含8个位 ,可以存储无符号值0-255,或者有符号值-128--127
    在这里插入图片描述
  • 之后为了存储更大的值,我们把两个或更多的字节合在一起作为一个更大的内存单位。例如,机器以字为单位存储整数,每一个字一般有24个字节组成。下面这个图所表示的内存位置以4个字节来表示。
    在这里插入图片描述
  • 由于它们包含了更多的位,每一个字可以容纳无符号整数的范围是从0-4294967295(或者是 2 32 − 1 2^{32}-1 2321),或者是有符号的范围(-21474836482147483647(或者说是 − 2 31 -2^{31} 231 2 31 − 1 2^{31}-1 2311))。
  • 注意:地址是最左边那个字节的位置还是最右边那个字节的位置,与计算机体系结构有关。还需要注意的硬件事项是边界对齐,在要求边界对齐的机器上,整型值存储的起始位置只能是某些特定的字节,通常是24的倍数。
  • 地址与内容
    • 这里有一个例子,上边的数字是内存地址,下边的是对应的内容。
      在这里插入图片描述

    • 如果你记得这几个数的地址你就可以根据地址来用这些值,但是要记住地址太难了,地址有很多,很复杂,所以不切实际。所以可以通过名字而不是地址来访问内存的位置。如下图所示:

      在这里插入图片描述

    • 有一点很重要,名字与内存位置之间的关联并不是硬件提供的,它是由编译器实现的。所以这些变量给了我们一种更方便的方法记住地址————硬件仍然通过地址访问内存位置

2、值和类型

在这里插入图片描述

  • 现在让我们来看一下存储于这些位置的值。
    int a = 112,b = -1;
    float c = 3.14; //1078523331解释成浮点数为3.14
    int *d = &a; //变量a的地址是100,所以d为100
    float *e = &c; //变量c的地址是108,所以e为108
    
    • c声明的浮点型变量,但是在图中却是一个整数,为什么?
      原因:该变量包含了一系列内容为01的位,他们可以解释为整数,也可以被解释为浮点数,这取决于他们被使用的方式,如果使用的是整型算术指令,这个值就解释为整数,如果使用的浮点数类型的指令,就解释为浮点数。
    • 这个事实引出了一个重要的结论:不能简单的通过检查一个值的位来判断他的类型

3、指针变量的内容

在这里插入图片描述

  • 需要清楚以下变量对应的值

    int *d = &a; 
    float *e = &c; /*通过上面的定义得到以下值*/
    &d = 112 // 变量d的地址d = 100 // 变量d的值、变量a的地址
    *d = 112 // 地址d中的内容、变量a的值&e = 116// 变量e的地址e = 108// 变量e的值、变量c的地址
    *e = 3.14// 地址e中的内容、变量e的值
    

4、间接访问操作符

  • 通过一个指针访问它所指向的地址的过程成为间接访问或解引用指针。这个用于执行间接访问的操作符是单目操作符*。下面是间接访问操作符的一些示例。
    在这里插入图片描述

  • 可通过以下的箭头记法进行描述

    在这里插入图片描述

5、未初始化和非法的指针

相关文章:

《C和指针》(6)指针

1、内存和地址 计算机的内存是由数以亿万计的位(bit)组成,每一个位可以容纳值0、1值。由于一个位所能表示的值的范围太有限,所以单独的位用处不大。通常许多为合成一组作为一个单位,这样就可以存储范围较大的值。下图…...

零基础强化学习入门分享

(一)前言:强化学习入门顺序。 以前主要学习硬件PCB单片机等知识,后来接触的项目也大多与电气相关,从一窍不通到稍微找到点门道,中间走过不少弯路,误打误撞中,也留下了一些经验。 我的…...

QT快捷键

--------------------------------------------------- --------------------------------------------------- QT断点调试 Ctrl B 编译程序 F5 调试运行程序 F10 单步调试 F11 进入函数调试 --------------------------------------------------- -----------------------…...

LabVIEW 开发在不确定路况下自动速度辅助系统

LabVIEW 开发在不确定路况下自动速度辅助系统 智能驾驶辅助系统是汽车行业最先进的升级和尖端技术,智能交通系统依靠智能驾驶辅助系统在公共交通部门工作。该智能驾驶辅助系统技术包括自适应巡航控制,防抱死制动系统,安全气囊展开&#xff0…...

《面试1v1》ElasticSearch 和 Lucene

🍅 作者简介:王哥,CSDN2022博客总榜Top100🏆、博客专家💪 🍅 技术交流:定期更新Java硬核干货,不定期送书活动 🍅 王哥多年工作总结:Java学习路线总结&#xf…...

P5727 【深基5.例3】冰雹猜想

【深基5.例3】冰雹猜想 题目描述 给出一个正整数 n n n,然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 3 3 3 再加 1 1 1,否则除以 2 2 2。经过若干次循环后,最终都会回到 1 1 1。经过验证很…...

ConcurrentHashMap1.7 源码浅析

分析过HashMap的1.7的版本的结构,但是HashMap是线程不安全的,多线程触发扩容还会发生死循环问题,那么ConcurrentHashMap 就是解决这个问题的,这是一个线程安全的Map,那么对应的内部实现是怎么样的,简单分析…...

跨境电商时代的安全护航

随着跨境电商业务的蓬勃发展,网络安全问题日益突出。为了保障个人信息的安全和商业竞争的公平性,防关联浏览器和多开浏览器的需求日益增长。本文将为您介绍隐擎fox指纹浏览器,探讨其在跨境电商时代的重要作用,以及如何通过该浏览器…...

JavaScript Es6 _1 笔记

JavaScript Es6 _1 笔记 学习作用域、变量提升、闭包等语言特征,加深对 JavaScript 的理解,掌握变量赋值、函数声明的简洁语法,降低代码的冗余度。 理解作用域对程序执行的影响能够分析程序执行的作用域范围理解闭包本质,利用闭包…...

结构体和 Json 相互转换(序列化反序列化)

关于 JSON 数据 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也 易于机器解析和生成。RESTfull Api 接口中返回的数据都是 json 数据。 Json 的基本格式如下: { "a": "Hello", "b": "…...

【力扣刷题 | 第二十四天】

目录 前言: 416. 分割等和子集 - 力扣(LeetCode) 总结 前言: 今晚我们爆刷动态规划类型的题目。 416. 分割等和子集 - 力扣(LeetCode) 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这…...

PyTorch使用(一)(常用库)

1.各大模型库 hub:简单来说就是专门为PyTorch集成的算法模型库 网站:GitHub - pytorch/hub: Submission to https://pytorch.org/hub/ Model Zoo:这个平台上提供预训练模型,在每个模型上,会标注出这个模型在GitHub的标…...

React ~ React Router 6

React Router 6 VS React Router 5.x 内置组件的变化; 移除<Switch /> , 新增<Routes />语法的变化; component { About } 变为 element { <About /> }新增多个hook官方明确推荐函数式组件了! 一级路由(变化) 安装路由 npm i react-router-dom (默认是最…...

【LeetCode每日一题】——304.二维区域和检索-矩阵不可变

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 矩阵 二【题目难度】 中等 三【题目编号】 304.二维区域和检索-矩阵不可变 四【题目描述】 …...

硬件串口通信协议学习(UART、IIC、SPI、CAN)

0.前言 学习资料&#xff1a;江协科技的个人空间-江协科技个人主页-哔哩哔哩视频 通信的目的&#xff1a;将一个设备的数据传送到另一个设备&#xff0c;扩展硬件系统通信协议&#xff1a;制定通信的规则&#xff0c;通信双方按照协议规则进行数据收发 全双工&#xff1a;通信…...

第一章-JavaScript基础进阶part2:事件

文章目录 概念一、注册事件&#xff08;绑定事件&#xff09;1.1 addEventListener事件监听 二、删除事件&#xff08;解绑&#xff09;三、DOM事件流四、事件对象event4.1 e.target与this与e.currentTarget的区别4.2 事件对象的常见属性 五、阻止事件默认行为及冒泡六、事件委…...

如何优雅的使用后端接口

优雅的后端接口 一个后端接口大致分为四个部分&#xff1a;接口地址(url)、接口请求方式(get、post等)、请求数据(request)、响 应数据(response)。 一、URL & Method Rest 设计风格 》 Restful API 简单理解&#xff1a; URI 是用来唯一标志一个互联网资源&#xff1b;Me…...

QEMU源码全解析25 —— QOM介绍(14)

接前一篇文章&#xff1a;QEMU源码全解析24 —— QOM介绍&#xff08;13&#xff09; 本文内容参考&#xff1a; 《趣谈Linux操作系统》 —— 刘超&#xff0c;极客时间 《QEMU/KVM》源码解析与应用 —— 李强&#xff0c;机械工业出版社 特此致谢&#xff01; 本文开始对于…...

TopK问题

topK问题&#xff1a; N个数找最大或者最小的前k个。 例子&#xff1a; 优质筛选&#xff08;店面的排名&#xff09; 10000个数&#xff0c;找出最大的前10个数 解决思路&#xff1a;建立大堆&#xff0c;然后pop9次 但是有些场景&#xff0c;上面的思路…...

接口自动化测试-Postman+Newman+Git+Jenkins实战集成(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、Postman 创建…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...