深挖C语言:深入理解指针(1)

发布时间:2026/10/5 23:51:34

深挖C语言:深入理解指针(1) 目录1.内存和地址2.指针变量和地址2.1 取地址操作符 2.2 指针变量2.3 解引用操作符 *2.4 指针变量的大小3.指针变量类型的意义3.1 指针的解引用3.2 指针 - 整数3.3 void* 类型指针4.指针的运算4.1 指针 - 指针4.2 指针 - 指针4.3 指针的关系运算正文1.内存和地址内存通俗来讲是一个临时存储数据的地方将内存比作宿舍楼假设我们要找内存中的数据也就是某一个房间挨个找的效率非常低但是如果根据楼层和房间的情况给每个房间加上编号那么就会大大提高找房间的效率由此我们引出了地址这一概念。地址相当于宿舍楼中每个房间的门牌号例如101、102、201……在CPU中央处理器中内存被划分为一个个的内存单元每个内存单元的大小是1个字节。其中每个内存单元就相当于一个房间一个内存单元有8个比特位一个比特位可以存储一个2进制的0或者1好比房间内可以住8名学生每个学生代表一个比特位。在CPU中每个内存单元都有一个地址根据这个地址就能够在CPU中快速的找到某一个内存单元C语言中给这些地址起了一个新的名字“指针”。结论内存单元编号 地址 指针2.指针变量和地址2.1 取地址操作符 操作对象变量、数组元素、结构体成员。作用得到操作数在内存中首字节地址。在C语言中创建变量其实就是在向内存中申请空间如图我们已知变量a向内存中申请了空间为了得到变量a的地址就要用到 的使用如图注意int 类型的变量有4个字节理论上来讲是有四个指针的但是输出的结果只有一个指针输出指针是第一个字节的指针已知第一个字节的指针就能够按照从小到大的顺序找到后面是3个字节的指针。2.2 指针变量用 得到的指针是一串数值也是需要用变量来进行存储的例如0x006FFD77存储该数值的变量称为“指针变量”。解释p的左边是 int ** 说明 p 是指针变量int 说明 p 所存储的指针指向的是 int 类型对象。指针变量的类型最好与所存储指针指向的对象类型相同例如 char 类型对应的指针变量的 类型是 char *2.3 解引用操作符 *操作对象 指针变量。作用拿到指针所存储的真实数据。如图利用解引用操作符可以直接对指针所指向的内容进行访问与修改增加了写代码的途径。2.4 指针变量的大小指针变量大小与类型无关与代码所处的平台有关在 x64 平台下所有类型的指针变量大小都是 8 个字节而在 x86 平台下大小都是 4 个字节。这是因为 x64 平台总共有64跟地址线一个地址线能够存储一个二进制的0或者1,一个地址就是64个二进制位组成的二进制序列存储起来需要 8 个字节的空间指针变量的大小就是 8 个字节。3.指针变量类型的意义3.1 指针的解引用对比下面两段代码在调试时观察内存的变化代码1代码2结果得知代码1会将int的4个字节全部改为0但是代码2只是将n的第一个字节改为0结论指针类型决定了对指针解引用时操作权限有多大一次能够操作几个字节。例如char* 的指针一次只能操作一个字节而int* 类型的指针一次能操作四个字节。3.2 指针 - 整数根据代码观察指针的变化不难看出char* 类型的指针变量 1 跳过了一个字节int* 类型的指针变量 1 跳过了四个字节指针变量1 代表着跳过一个所指向的元素 往指针数值大的跳跃- 是往指针数值小的跳跃。结论指针类型决定了指针向前或者向后跨一步的距离有多大。3.3 void* 类型指针void* 类型指针是 无具体类型的指针或者称为 泛型指针作用接受任意类型的指针在函数参数部分用该类型可以实现泛型编程的效果使得一个函数来处理多种类型的数据。局限性void* 指针变量不能够直接进行 解引用操作 和 指针的-运算。4.指针的运算指针三种基本运算指针 - 指针、指针 - 指针、指针的关系运算4.1 指针 - 指针在内存中数组是连续存放的只要知道第一个元素的地址就能顺藤摸瓜找到后面所有元素。如图4.2 指针 - 指针如图结果9结论指针 - 指针 得到的是指针之间的元素个数。前提两个指针指向同一块空间4.3 指针的关系运算如图指针就是地址地址就是编号编号就是数值因此指针可以用来进行比较。数组中随着下标的增长数组元素的地址是由小逐渐变大的。最后感谢阅读欢迎大家交流与指正。
延伸阅读

更多相关文章

2026/9/25 12:25:08

基于MCU与DAC的正弦波发生器设计:从原理到工程实践

1. 正弦波发生器:从概念到实现的深度拆解在电子工程、音频处理、通信系统乃至基础物理实验的无数场景里,正弦波都是一个绕不开的核心角色。它纯净、周期性的特性,使其成为测试信号、载波、时钟基准的理想选择。而一个稳定、精确、可调的正弦波…

2026/9/23 23:35:59

2025年主流测试用例集工具深度横评与选型指南

1. 测试用例集工具:从“记录本”到“效率引擎”的演进 如果你和我一样,在软件测试这行摸爬滚打了几年,一定经历过从Excel、Word文档管理测试用例的“石器时代”。那时候,一个功能迭代,测试用例文档动辄几十页&#xff…

2026/10/5 14:02:47

TypeScript工程化AI应用开发:从配置管理到流式响应实战

1. 从“Hello World”到“Hello AI”:为什么你的第一个AI调用项目需要从工程化开始 如果你和我一样,是个对AI应用开发充满好奇的前端或全栈开发者,当看到ChatGPT API、Claude API或者各种图像生成模型时,第一反应可能就是&#xf…

2026/10/6 12:49:09

基于PaddleNLP的ERNIE标点恢复:中文文本自动加标点实战

简介:基于PaddleNLP的标点恢复(punctuation restoration)源码包,面向自然语言处理初学者与工程开发者,用于为无标点的预测文本自动添加中文标点。包内选用ernie_linear系列中文标点预训练模型,覆盖不同推理…

2026/10/6 12:49:09

PaddleNLP标点恢复实战:序列标注、ERNIE训练与滑窗推理避坑

简介:基于PaddleNLP的中文标点符号预测源码包,面向自然语言处理初学者与开发者,解决纯文本缺乏标点导致阅读不畅、下游任务效果下降的问题。压缩包共6个文件,包含5个Python脚本与1个TXT配置,整包仅7KB,体积…

2026/10/6 12:49:09

Go商城后端架构实战:MySQL读写分离与分布式日志链路全解析

简介:一份基于 gingormredismysql 读写分离架构的电子商城项目源码,面向 Go 后端学习者、毕业设计与课程设计开发者。项目实现了 JWT 鉴权、CORS 跨域、AES 对称加密,并引入 ELK 日志平台、jaeger 链路追踪与 skywalk 监控;其中 J…

2026/10/6 12:49:09

macOS .app 分发避坑指南:从打包签名到公证交付

简介:一个名为 Datum-Lite 的数据库管理工具以 zip 压缩包形式分发,内置图形化界面,面向数据库管理员、开发人员以及不熟悉SQL的日常使用者。它把增、删、改、查可视化为简单表单和操作选项,并提供查询构建器,用户可拖…

2026/10/6 12:49:09

数据结构与算法实验详解:链表、迷宫、Huffman编码与排序

简介:面向北邮数据结构与算法课程,实验与作业合集(含两版)系统覆盖数组、链表、栈与队列、树、图、哈希表以及排序查找等核心知识模块,适合正在学习该课程的本科生、备考复试的学生,也适合需要夯实基础的在…

2026/10/6 12:44:08

一文讲透TCP/IP协议栈:从分层原理到Socket编程与嵌入式实战

1. 先搞明白:TCP/IP协议栈到底是个什么东西很多人一听到“TCP/IP协议栈”这七个字就开始头皮发麻,脑子里全是大学《计算机网络》教材上那些密密麻麻的分层图解、三次握手四次挥手、各种报文字段说明。说实话,当年我也一样,对着课本…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/6 4:01:51

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/5 17:38:27

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 0:03:23

MR25H40CDF+STM32F031C6工业级高可靠数据存储方案

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的 PLC 控制柜里、在风电变流器的散热片背面、在矿井监测终端的金属外壳下,你经常能看到一块指甲盖大小的黑色芯片——它既不是 Flash,也不是…

2026/10/6 0:03:23

MRAM+STM32工业断电数据保全实战指南

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的PLC柜里、在野外无人值守的环境监测终端里、在高速运转的包装机控制板上,你经常能看到一块指甲盖大小的黑色芯片,旁边贴着“MR25H40CDF”丝…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑