Days 11 易混指针学习笔记
前言指针是 C 语言最难、最核心的知识点前期学数组、函数传参都会和指针挂钩整理课堂全部指针内容概念 语法 代码逻辑一次性梳理清楚避开野指针、空指针、地址传递等新手高频坑。一、指针基础概念1. 地址计算机给内存每个字节空间分配唯一编号这个编号就是地址内存按字节编址所有变量、数组、代码都存在对应地址空间里。2. 指针指针本质就是内存地址地址等价于指针指针自带类型类型决定访问内存时读取多少字节数据。3. 指针变量专门用来存放内存地址的变量日常说的 “指针” 大多指代指针变量。二、指针两大核心运算符1. 取地址运算符作用获取变量在内存中的首地址使用限制只能作用于左值普通变量、数组元素常量、表达式不能取地址类型变化普通 int 变量取地址后变为int *指针类型int num 10; num; // 获取num变量的内存首地址2. * 解引用 / 取值运算符作用拿到指针存储的地址访问该地址对应的内存数据使用限制只能作用于指针类型普通变量不能直接用 *类型变化int *指针解引用后变回普通 int 类型可做左值*p 100代表修改指针指向空间的值int a 20; int *p a; *p 666; // 修改a的值为666三、指针变量定义规则1. 标准定义格式数据类型 *变量名; // 示例 int *p; // 指向int类型空间的指针 char *p; // 指向char类型空间的指针 float *p; // 指向float类型空间的指针 double *p; // 指向double类型空间的指针 // 同时定义多个指针每个变量前都要加* int *p1, *p2;2. 关键特性所有指针变量占用空间大小统一不管是 int、char、double*所有指针变量都占 8 字节指针类型只决定解引用时读取字节数不改变指针自身存储空间。3. 野指针定义未初始化的指针、指向已经释放 / 销毁空间的指针风险野指针存储随机地址对野指针*解引用会造成程序崩溃规范定义指针必须初始化杜绝野指针。4. 空指针 NULL定义指向内存地址0x0的指针用宏NULL表示int *p NULL;注意0x0 地址是系统只读保护区域禁止对空指针解引用*p运行直接崩溃用途初始化指针、判断指针是否有效。5. 不同类型指针含义表格写法含义int *p指针指向一块 int 大小的内存空间解引用一次读取 4 字节char *p指针指向 char 空间解引用读取 1 字节float *p指针指向 float 空间解引用读取 4 字节double *p指针指向 double 空间解引用读取 8 字节四、指针两种操作含义假设有int a 100; int *p a;p操作指针变量本身修改 p 的值等于修改指针的指向*p操作指针指向的内存空间不会改变 p 存的地址只会修改 a 里面的数据。指针赋值示例int a 100, b 200; int *p a; int *q b; p b; // 修改指针p让p指向b p q; // 把q存储的地址拷贝给pp和q同时指向b *p b; // 将b的值写入p指向的空间b覆盖a *p *q; // 把q指向的数据赋值给p指向的空间五、指针算术运算指针只能做、-、、--、指针相减不能做乘除运算。p向内存高地址偏移偏移字节数 指针对应数据类型字节数int* p 向后偏移 4 字节char* p 向后偏移 1 字节p--向内存低地址偏移对应类型字节*p等价(*p), p先取 p 指向的值再让指针后移两个同类型指针相减结果是两个地址之间相差元素个数不是字节数。六、指针做函数参数地址传递核心1. 值传递 vs 地址传递值传递实参拷贝数值给形参形参是副本修改形参无法影响外部实参地址传递把实参的内存地址传给指针形参函数内通过*形参直接操作外部变量能修改实原值核心用途利用地址传递实现函数同时返回多个修改结果。示例交换两个数字不用指针无法实现#include stdio.h void swap(int *x, int *y) { int temp *x; *x *y; *y temp; } int main() { int a 10, b 20; swap(a, b); // 传入地址地址传递 printf(a%d b%d,a,b); return 0; }七、一维数组与指针深度关系1. 数组名本质数组名a是指向数组首元素的指针常量等价于a[0]int a[5] {1,2,3,4,5}; int *p a; // 等同于 int *p a[0];2. 数组下标和指针完全等价plaintexta[n] *(a n) *(p n) p[n]原理[]只是语法糖底层全部转换为指针偏移解引用。3. 数组名不能当成普通指针的两种场景sizeof(a)计算整个数组占用总字节不会退化为指针a取整个数组的地址类型是数组指针不是元素指针。八、一维数组传参三种写法底层全是指针数组传参本质只传递首元素地址数组长度需要额外传参int a[10]; // 写法1数组形式 int fun(int array[], int len); // 写法2固定长度数组无实际限制仅语法 int fun(int array[10], int len); // 写法3标准指针形式推荐 int fun(int *parray, int len);九、新手指针避坑总结指针必须初始化未初始化是野指针严禁直接解引用空指针 NULL 不能做*解引用操作程序直接崩溃值传递改不了外部变量想要修改必须传地址指针参数数组名是指针常量不能写a p;给数组名重新赋值指针加减偏移量看自身类型char每次移 1 字节int每次移 4 字节所有指针变量自身都是 8 字节区别只在解引用读取的数据宽度*p优先级先取值再移动指针不要写成(*p)数组传参只会传首地址函数内无法用 sizeof 获取数组真实长度必须手动传入 len。

相关新闻

5分钟打造专属Obsidian主页:告别单调启动界面的终极指南

5分钟打造专属Obsidian主页:告别单调启动界面的终极指南

5分钟打造专属Obsidian主页:告别单调启动界面的终极指南 【免费下载链接】obsidian-homepage Obsidian homepage - Minimal and aesthetic template (with my unique features) 项目地址: https://gitcode.com/gh_mirrors/obs/obsidian-homepage 厌倦了每次打…

2026/8/1 6:48:29阅读更多 →
AI角色动画长期依赖问题:从原理到工程实践的全方位解决方案

AI角色动画长期依赖问题:从原理到工程实践的全方位解决方案

1. 项目概述:当角色动画遇上“长期依赖”的幽灵在角色动画的制作与研发中,有一个问题像幽灵一样困扰着从业者多年,那就是“长期依赖”。这听起来有点学术,但它的表现非常直观:你训练了一个AI模型来生成角色的走路动画&…

2026/8/1 6:48:29阅读更多 →
Qt模态与非模态对话框:事件循环原理与实战避坑指南

Qt模态与非模态对话框:事件循环原理与实战避坑指南

1. 从一次“卡死”的界面说起:模态与非模态的本质区别 那天下午,我正在调试一个刚写完的Qt小工具,主窗口上有个“配置参数”的按钮。我兴冲冲地点了一下,弹出了一个设置对话框。我随手把它拖到一边,想回头看看主窗口的…

2026/8/1 6:46:29阅读更多 →
PHP应用打包与分发实战:深入PHAR文件格式与构建实践

PHP应用打包与分发实战:深入PHAR文件格式与构建实践

1. 项目概述:从“压缩包”到“自包含应用”的PHAR革命 如果你用PHP做过项目部署,肯定对那一大堆零散的 .php 文件、配置文件、静态资源感到头疼。传统的部署方式要么是直接上传整个目录,要么是用ZIP打包再解压,不仅繁琐&#xf…

2026/8/1 8:06:48阅读更多 →
PingPong发起国内首个Maker Tool行业联盟,助力中国品牌拓展海外创客工具市场

PingPong发起国内首个Maker Tool行业联盟,助力中国品牌拓展海外创客工具市场

随着3D打印等数字化制造工具走向消费市场,PingPong联合产业链企业发起国内首个Maker Tool行业联盟,发布白皮书,推动中国创客工具品牌出海。行业加速成长3D打印、激光雕刻等数字化制造工具从专业领域走向消费市场,让过去小众的硬件…

2026/8/1 8:06:48阅读更多 →
AI大模型应用开发实战:从LangChain、RAG到Agent的完整指南

AI大模型应用开发实战:从LangChain、RAG到Agent的完整指南

最近在AI大模型应用开发中,很多开发者反馈面对LangChain、RAG、Agent等新技术概念时感到无从下手,网上资料零散且缺乏系统性实战指导。本文基于实际项目经验,整理一套完整的AI大模型应用开发教程,涵盖从基础概念到项目落地的全流程…

2026/8/1 8:06:48阅读更多 →
树莓派新手入门:从零开始搭建微型计算机的保姆级教程

树莓派新手入门:从零开始搭建微型计算机的保姆级教程

1. 项目概述:为什么树莓派值得你投入时间? 如果你对微型计算机、智能家居、编程学习或者任何需要一台低成本、低功耗、可编程“大脑”的项目感兴趣,那么树莓派(Raspberry Pi)绝对是你绕不开的一个名字。它本质上是一台…

2026/8/1 8:06:48阅读更多 →
基于C++的正则表达式等价性判断系统:从自动机理论到工程实践

基于C++的正则表达式等价性判断系统:从自动机理论到工程实践

1. 项目概述:为什么我们需要一个正则表达式等价性判断系统? 在软件开发、网络安全、文本处理乃至数据库查询优化的日常工作中,正则表达式(Regular Expression, Regex)就像一把瑞士军刀,无处不在。无论是验证…

2026/8/1 8:06:48阅读更多 →
Linux存储管理实战:eMMC/SD卡分区、格式化与故障修复指南

Linux存储管理实战:eMMC/SD卡分区、格式化与故障修复指南

1. 项目概述:为什么需要掌握Linux下的存储介质管理在嵌入式开发、服务器运维甚至是日常的桌面使用中,我们经常会遇到需要对eMMC(嵌入式多媒体卡)或SD卡这类存储介质进行初始化和管理的场景。比如,拿到一块全新的RK3562…

2026/8/1 8:04:47阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/31 20:44:05阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/31 17:41:43阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/31 20:44:05阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →