恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

C语言——深度理解指针(1)

  • 首页
  • 资讯中心
  • /
  • C语言——深度理解指针(1)

相关资讯

欧宝79款动力总成应对欧6d-TEMP排放法规的技术路径与工程实践 2026/8/20 22:34:02
80 亿美元收购 OpenRouter:AI 模型入口易主 2026/8/20 22:34:02
垂直领域大模型如何赋能农业育种?以“丰菽”2.0为例 2026/8/20 22:29:02

最新资讯

写论文软件哪个好?书匠策AI让我发现:毕业论文可以“流水线式”生产
AI写论文哪个软件最好?拆解完书匠策AI的毕业论文功能,我发现了“好工具”和“真工具”的区别
详解AUTOSAR:WdgM监督图、容错状态机与复位决策机制(拓展篇—29)
电子设计基础--认识元器件--三极管、MOS管
文献综述还在“复制粘贴拼凑”?书匠策AI把这个体力活变成了“智慧拼图游戏”
英特尔自动驾驶战略解析:从Mobileye收购看芯片巨头的产业卡位

今日推荐

类模板模板参数的全部使用场景
多态的理解,虚函数表的理解
C++ 类编译器自动生成的默认函数 | 拷贝构造函数 vs 拷贝赋值运算符(赋值构造)

本周热门

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码
【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码
隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

C语言——深度理解指针(1)

发布时间:2026/8/20 22:34:02
C语言——深度理解指针(1) 耕耘 :C、C、嵌入式技术领域我的个人主页❄️个人专栏《C语言专栏》 《嵌入式专栏》✨**不要等待机会而要创造机会**✨博主简介:✨✨一位热爱生活的阳光大男孩.✨✨前言指针是C语言的灵魂也是初学者通往高级编程的必经之路。本文旨在为你拨开指针的迷雾从内存与地址的本质出发系统讲解指针变量、解引用、类型意义及运算等核心概念。通过清晰的图示与代码示例你将理解指针如何操作内存、为何存在类型差异以及void*、指针运算等进阶用法。掌握指针方能真正驾驭C语言的内存世界。文章目录前言1、内存和地址1.1内存2、指针变量和地址2.1 取地址操作符2.2 指针变量和解引⽤操作符*2.2.1 指针变量2.2.2 如何拆解指针类型2.2.3 解引⽤操作符2.3 指针变量的⼤⼩3. 指针变量类型的意义3.1 指针的解引⽤3.2 指针-整数3.3 void* 指针4. 指针运算4.1 指针- 整数4.2 指针 - 指针4.3 指针的关系运算结语1、内存和地址1.1内存我们把内存划分为⼀个个的内存单元每个内存单元的⼤⼩取1个字节。其中每个内存单元相当于⼀个学⽣宿舍⼀个字节空间⾥⾯能放8个⽐特位就好⽐同学们住的⼋⼈间每个⼈是⼀个⽐特位。每个内存单元也都有⼀个编号这个编号就相当于宿舍房间的⻔牌号有了这个内存单元的编号CPU就可以快速找到⼀个内存空间。⽣活中我们把⻔牌号也叫地址在计算机中我们把内存单元的编号也称为地址。C语⾔中给地址起了新的名字叫指针。所以我们可以理解为内存单元的编号 地址 指针2、指针变量和地址2.1 取地址操作符字面意思它可以取出变量的地址。#includestdio.hintmain(){inta10;a;//取出a的地址printf(%p\n,a);//其中%p于输出或输入指针的地址值return0;}但是int类型一次性是向内存申请了4个字节的空间来储存a的值a取出的是a所占4个字节中地址较⼩的字节的地址所以003FF858就是字节中地址较⼩的字节的地址。变量在内存中的存储虽然整型变量占⽤4个字节我们只要知道了第⼀个字节地址顺藤摸⽠访问到4个字节的数据也是可⾏的。2.2 指针变量和解引⽤操作符*2.2.1 指针变量那我们通过取地址操作符()拿到的地址是⼀个数值⽐如 0x006FFD70这个数值有时候也是需要存储起来⽅便后期再使⽤的那我们把这样的地址值存放在哪⾥呢答案是指针变量中例如#includestdio.hintmain(){inta10;int*paa;//取出a的地址并存储到指针变量pa中return0;}指针变量也是⼀种变量这种变量就是⽤来存放地址的存放在指针变量中的值都会理解为地址2.2.2 如何拆解指针类型inta10;int*paa;这⾥pa左边写的是 int * 是在说明pa是指针变量⽽前⾯的 int 是在说明pa指向的a是int类型的*char类型也同理charchw;char*pchch;//指针变量是pch2.2.3 解引⽤操作符解引用操作符的作用就是可以通过地址对对这个值进行一系列的操作。#includestdio.hintmain(){inta100;int*paa;*pa0;printf(%d\n,a);return0;}**pa 的意思就是通过pa中存放的地址找到指向的空间pa其实就是a变量了所以pa 0这个操作符是把a改成了0.*2.3 指针变量的⼤⼩32位平台下地址是32个bit位指针变量⼤⼩是4个字节64位平台下地址是64个bit位指针变量⼤⼩是8个字节注意指针变量的⼤⼩和类型是⽆关的只要指针类型的变量在相同的平台下⼤⼩都是相同的。3. 指针变量类型的意义3.1 指针的解引⽤1、#includestdio.hintmain(){intn0x11223344;int*pin;*pi0;return02、#includestdio.hintmain(){intn0x11223344;char*pc(char*)n;//char*含义为将n强制转换为char型*pc0;return0调试我们可以看到代码1会将n的4个字节全部改为0但是代码2只是将n的第⼀个字节改为0。结论指针的类型决定了对指针解引⽤的时候有多⼤的权限⼀次能操作⼏个字节。⽐如 char的指针解引⽤就只能访问⼀个字节⽽ int的指针的解引⽤就能访问四个字节。**3.2 指针±整数intmain(){intn10;char*pc(char*)n;//将*n改成成char*类型int*pin;printf(%p\n,n);printf(%p\n,pc);printf(%p\n,pc1);//指针1表示跳过类型char*的数据也就是1个字节printf(%p\n,pi);printf(%p\n,pi1);//指针1表示跳过类型int*的数据也就是4个字节return0;}我们可以看出 char* 类型的指针变量1跳过1个字节 int* 类型的指针变量1跳过了4个字节。结论指针的类型决定了指针向前或者向后⾛⼀步有多⼤距离。3.3 void* 指针可以理解为⽆具体类型的指针或者叫泛型指针这种类型的指针可以⽤来接受任意类型地址inta10;int*paa;//正确的char*pca;//这样是错误的因为类型不兼容void*pda;//正确的注意void类型的指针不能直接进⾏指针的±整数和解引⽤的运算*。4. 指针运算4.1 指针± 整数因为数组在内存中是连续存放的只要知道第⼀个元素的地址顺藤摸⽠就能找到后⾯的所有元素#includestdio.hintmain(){intarr[10]{1,2,3,4,5,6,7,8,9,10};int*parr[0];inti0;intszsizeof(arr)/sizeof(arr[0]);for(i0;isz;i){printf(%d ,*(pi));//pi 这⾥就是指针整数//注意指针—指针的时候两个指针要指向同一块地方}return0;}4.2 指针 - 指针得到指针和指针之间的元素个数intmain(){intarr[]{1,2,3,4,5,6,7,8,9,10};printf(%d,arr[9]-arr[0]);//得到指针和指针之间的元素个数//注意指针相减表示其中间有几个指针类型return0;}4.3 指针的关系运算#includestdio.hintmain(){intarr[10]{1,2,3,4,5,6,7,8,9,10};int*parr[0];intszsizeof(arr)/sizeof(arr[0]);while(parrsz)//指针的⼤⼩⽐较{printf(%d ,*p);p;}return0;}结语“别走你的三连还在我这儿寄存着呢点赞是门票投币是VIP收藏是复活甲下次更新记得来取哦完.

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号